как нарисовать круг на холсте с помощью java для Android

Я хочу нарисовать круг на холсте в своем приложении для Android. Я много искал и понял, что если мне нужна динамическая форма рисования, которую можно обновлять время от времени, мне нужно использовать холст вместо изображения.

любая помощь приветствуется

это код, который я написал до сих пор, но он ничего не будет рисовать на экране устройства Android:

    private void createBitMap() {
    Bitmap bitMap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);  //creates bmp
    bitMap = bitMap.copy(bitMap.getConfig(), true);     //lets bmp to be mutable
    Canvas canvas = new Canvas(bitMap);                 //draw a canvas in defined bmp

    Paint paint = new Paint();                          //define paint and paint color
    paint.setColor(Color.RED);
    paint.setStyle(Style.FILL_AND_STROKE);
    //paint.setAntiAlias(true);

    canvas.drawCircle(50, 50, 10, paint);
}

person Hossein Dolatabadi    schedule 19.12.2013    source источник
comment
возможный дубликат: stackoverflow .com/questions/17954596/   -  person John    schedule 19.12.2013
comment
просто используйте: protected void onDraw (Canvas canvas) { super.onDraw (canvas); canvas.drawCircle(x, y, радиус, краска); }   -  person Shailendra Madda    schedule 19.12.2013


Ответы (2)


Обновите свой метод createBitMap следующим образом.

private void createBitMap() {
        // Create a mutable bitmap
        Bitmap bitMap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);

        bitMap = bitMap.copy(bitMap.getConfig(), true);
        // Construct a canvas with the specified bitmap to draw into
        Canvas canvas = new Canvas(bitMap);
        // Create a new paint with default settings.
        Paint paint = new Paint();
        // smooths out the edges of what is being drawn
        paint.setAntiAlias(true);
        // set color
        paint.setColor(Color.BLACK);
        // set style
        paint.setStyle(Paint.Style.STROKE);
        // set stroke
        paint.setStrokeWidth(4.5f);
        // draw circle with radius 30
        canvas.drawCircle(50, 50, 30, paint);
        // set on ImageView or any other view 
        imageView.setImageBitmap(bitMap);

    }
person Jitender Dev    schedule 19.12.2013
comment
Большое спасибо. Оно работает. Вы показали мне, что я должен использовать ImageView и установить в нем изображение. заранее спасибо - person Hossein Dolatabadi; 19.12.2013

попробуй это

создайте ImageView и используйте image.setImageBitmap(bitMap);, чтобы сделать растровое изображение видимым.

открытый класс MainActivity расширяет Activity {ImageView image;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image=(ImageView)findViewById(R.id.imageView1);
        createBitMap();
    }

    private void createBitMap() {
        Bitmap bitMap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);  //creates bmp
        bitMap = bitMap.copy(bitMap.getConfig(), true);     //lets bmp to be mutable
        Canvas canvas = new Canvas(bitMap);                 //draw a canvas in defined bmp

        Paint paint = new Paint();
        // smooths
       paint.setAntiAlias(true);
        paint.setColor(Color.RED);
       paint.setStyle(Paint.Style.STROKE); 
        paint.setStrokeWidth(4.5f);
        // opacity
        //p.setAlpha(0x80); //
        canvas.drawCircle(50, 50, 30, paint);
        image.setImageBitmap(bitMap);
    }
person Nambi    schedule 19.12.2013
comment
Спасибо за ответ. Я просто хочу изменить свой код, чтобы рисовать круг. Изменить все означает прочитать все с самого начала :) - person Hossein Dolatabadi; 19.12.2013
comment
теперь я изменил свой ответ в соответствии с вашими потребностями. - person Nambi; 19.12.2013