【发布时间】:2012-08-04 20:42:33
【问题描述】:
在我的应用程序中,我有一个自定义视图,它呈现一些位图并使用onDraw() 将它们绘制到视图的画布上。画布最初是用一种颜色填充的。基本上我有以下代码:
public static int COLOR = Color.rgb(200, 50, 50);
@Override
public void onDraw(Canvas canvas) {
canvas.drawColor(COLOR);
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bitmap);
c.drawColor(COLOR);
canvas.drawBitmap(bitmap, 0, 0, null);
}
我希望代码会创建一个持续的红屏;位图以不同的红色渲染,因此它的位置是可见的。为了分析颜色,我对其进行了截图 - 位图是用(206,48,49) 而不是(200,50,50) 绘制的。
显然,这必须与使用 RGB_565 而不是 ARGB_8888 的位图有关(虽然我不想使用它)。所以我的问题是,如何用 RGB_565 颜色填充视图的画布以解决这些颜色问题?
我尝试通过删除最低有效位(red >> 3、green >> 2、blue >> 3)将(200,50,50) 转换为 RGB_565,但当然这在这里没有什么不同。 Android 在内部做了什么来从(200,50,50) 获取(206,48,49)?我的推理错误在哪里?
【问题讨论】:
标签: android view colors bitmap rgb