मैं एक ड्राइंग ऐप बनाने की कोशिश कर रहा हूं और अब तक मैं दो रंगों (हरा और काला) और दो आकार (सर्कल और स्क्वायर) से चुनने में सक्षम हूं। मैं पेंट करने के लिए और रंग जोड़ना चाहता हूं लेकिन मैं यह नहीं समझ सका कि 2 से अधिक रंग कैसे जोड़ें।
ये वे वर्ग हैं जिनका मैं उपयोग कर रहा हूं।
public class DrawLinesActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawshapes);
DrawLines d = new DrawLines(this);
setContentView (d);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
MenuItem menu1 = menu.add(0, 0, Menu.NONE, "Green");
MenuItem menu2 = menu.add(0, 1, Menu.NONE, "Black");
MenuItem menu3 = menu.add(0,2, Menu.NONE, "Pixel Brush");
MenuItem menu4 = menu.add(0,3, Menu.NONE, "Smooth Brush");
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case 0:
colours.fill = 0;
return true;
case 1:
colours.fill = 1;
return true;
case 2:
colours.shape = 0;
return true;
case 3:
colours.shape = 1;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
...
public class DrawLines extends View
{
Canvas c;
Paint paint;
Bitmap bmp;
Random g;
float X, Y;
public DrawLines(Context context)
{
super(context);
g=new Random();
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
bmp= Bitmap.createBitmap(1050,1650,conf);
paint = new Paint();
paint.setStyle (Paint.Style.STROKE);
paint.setColor (Color.WHITE);
this.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
float x, y;
c = new Canvas (bmp);
x = event.getX ();
y = event.getY ();
System.out.printf ("%f %f\n", X, Y);
paint.setAntiAlias (true);
if (colours.fill == 0)
{
paint.setStyle (Paint.Style.FILL);
paint.setColor (Color.GREEN);
if (colours.shape == 0)
c.drawRect (x, y, x + 50, y + 50, paint);
else
c.drawOval(new RectF (x, y, x + 50, y + 50), paint);
}
else
{
paint.setStyle (Paint.Style.FILL);
paint.setColor (Color.BLACK);
if (colours.shape == 0)
c.drawRect (x, y, x + 50, y + 50, paint);
else
c.drawOval(new RectF (x, y, x + 50, y + 50), paint);
}
paint.setColor (Color.WHITE);
invalidate ();
return true;
}
});
}
@Override
protected void onDraw (Canvas c)
{
super.onDraw (c);
c.drawBitmap (bmp, 0, 0, paint);
}
}
...
public class colours
{
static public int shape = 0;
static public int fill = 0;
}
1 उत्तर
सबसे पहले, सुनिश्चित करें कि उपयोगकर्ता अन्य रंगों तक पहुंच सकता है। आइए लाल जोड़ने का प्रयास करें।
MenuItem menu1 = menu.add(0, 0, Menu.NONE, "Green");
MenuItem menu2 = menu.add(0, 1, Menu.NONE, "Black");
MenuItem menu2 = menu.add(0, 2, Menu.NONE, "Red"); //Make an item for red.
MenuItem menu3 = menu.add(0, 3, Menu.NONE, "Pixel Brush");
MenuItem menu4 = menu.add(0, 4, Menu.NONE, "Smooth Brush");
इसके बाद, यह मानते हुए कि आपका कोड कैसे काम करता है, यह इसे fill
colours
की विशेषता के माध्यम से संभालता है। अगर fill
0 है, तो यह हरा है, नहीं तो यह काला है। एक केस जोड़ें 1
, जो लाल होगा।
if (colours.fill == 1)
{
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
...
}
else if (colours.fill == 0)
{
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.GREEN);
...
}
else
{
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.BLACK);
...
}
हमें बटन टैप कोड क्षेत्र में Red
के लिए केस जोड़ना भी सुनिश्चित करना चाहिए:
...
case 0:
colours.fill = 0;
return true;
case 1:
colours.fill = 1;
return true;
case 2:
colours.fill = 2;
return true;
case 3:
colours.shape = 0;
return true;
case 4:
colours.shape = 1;
return true;
...
आप देख सकते हैं कि मैंने Red
को 2 के रूप में रखा है और ब्रश सेटिंग को और आगे बढ़ाया है। यह सुनिश्चित करने के लिए है कि रंग समूहीकृत हैं।
अब, यह सब मैं आपके द्वारा दिए गए कोड से सुझा सकता हूं। शायद इसमें और भी कुछ है। लेकिन आपको इस पर गौर करना चाहिए।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।