android canvas.drawBitmap()用一种颜色绘制整个位图

时间:2016-12-28 16:36:53

标签: java android canvas bitmap

我正在做一个简单的绘画程序。

我正在绘制自定义位图,然后在onDraw方法中将此位图绘制到画布。

自定义位图和画布创建:

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);
}

因此,如果我有一个红色圆圈,将颜色更改为蓝色并绘制另一个圆圈,位图中的两个圆圈都是蓝色。这是为什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

对于您正在做的事情,在绘制到画布时传递绘画颜色没有意义。这就是画布上出现paint的当前颜色的方式。如果您查看文档,则可以null

正如评论中指出的那样,位图的配置对于您想要做的事情是不正确的。我建议ARGB_8888更有可能是你需要的,所以:

Bitmap.createBitmap(w - 150, h, Bitmap.Config.ARGB_8888);

canvas.drawBitmap(bitmap, 0, 0, null);