这个问题在这里已有答案:
我想在我的Android应用程序中在画布上画一个圆圈。我搜索了很多,并意识到我是否需要一种动态的绘画形式,可以随时更新我需要使用画布而不是imageView。
任何帮助表示赞赏
这是我到目前为止编写的代码,但它不会在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);
}
像这样更新你的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);
}
试试这个
创建ImageView并使用image.setImageBitmap(bitMap);
使位图可见。
公共类MainActivity扩展Activity {ImageView图像;
@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);
}