मैं एक ड्राइंग ऐप बनाने की कोशिश कर रहा हूं और अब तक मैं दो रंगों (हरा और काला) और दो आकार (सर्कल और स्क्वायर) से चुनने में सक्षम हूं। मैं पेंट करने के लिए और रंग जोड़ना चाहता हूं लेकिन मैं यह नहीं समझ सका कि 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
Real Sensei 7 जिंदा 2017, 23:38

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 के रूप में रखा है और ब्रश सेटिंग को और आगे बढ़ाया है। यह सुनिश्चित करने के लिए है कि रंग समूहीकृत हैं।

अब, यह सब मैं आपके द्वारा दिए गए कोड से सुझा सकता हूं। शायद इसमें और भी कुछ है। लेकिन आपको इस पर गौर करना चाहिए।

0
devRicher 7 जिंदा 2017, 23:48