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

标签 java android canvas bitmap

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

我正在绘制自定义位图,然后在 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/

相关文章:

Java 屏幕空白

android - Phonegap构建在phonegap应用程序开发中的作用是什么

java - Selenium 中基于 IP 的测试

java - 将 Baillie–PSW 测试从 Python 转换为 Java

android - 无法获取 GED Log Buf,err(0)

java - 如何在单击按钮时停止播放声音以启动另一个声音文件?

用于 UI 小部件的 HTML5 Canvas 库

JavaFX Canvas 扭曲图像

javascript - HTML Canvas 在绘制后立即删除矩形

Java 2D 游戏问题