我正在做一个简单的绘画程序。
我正在绘制自定义位图,然后在 onDraw 方法中将此位图绘制到 Canvas 上。
自定义位图和 Canvas 创建:
bitmap = Bitmap.createBitmap(w - 150,h,Bitmap.Config.ALPHA_8);
canvasa = new Canvas(bitmap);
当有人触摸屏幕时,会绘制一个圆圈:
canvasa.drawCircle(x, y, 10, paint);
效果很好,但是每次在屏幕上绘制位图时,每个圆圈都具有相同的颜色(绘制当前颜色):
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap,0,0, paint);
super.onDraw(canvas);
}
因此,如果我有一个红色圆圈,请将颜色更改为蓝色并绘制另一个圆圈,位图中的两个圆圈都是蓝色的。这是为什么?我该如何解决这个问题?
最佳答案
对于您正在做的事情,在绘制时将油漆颜色传递到 Canvas 是没有意义的。这就是 paint
当前颜色在 Canvas 上的显示方式。如果您检查文档,您会发现这可能是 null
。
正如评论中所指出的,位图的配置对于您想要执行的操作来说是不正确的。我建议 ARGB_8888
更有可能是您所需要的,因此:
Bitmap.createBitmap(w - 150, h, Bitmap.Config.ARGB_8888);
和:
canvas.drawBitmap(bitmap, 0, 0, null);
关于java - android canvas.drawBitmap() 用一种颜色绘制整个位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41366154/