【发布时间】:2011-09-28 15:31:05
【问题描述】:
我使用抗锯齿使我的图像更平滑。使用抗锯齿时,将在图像周围绘制深色边框。发生这种情况是因为 Android 使用黑色并将其与图像中的黄色混合。 这是一个普遍的问题!当我绘制一个矩形并将 alpha 值设置为 127 时,图像也会变得很暗。而不是使用黑色 Android 应该使用白色来绘制透明度。
有什么办法可以解决这个问题吗?
在画布上绘制半透明矩形的示例源代码。矩形也很暗,但应该很亮。
Bitmap bmp = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
Paint rPaint = new Paint();
rPaint.setColor(Color.parseColor("#F7E836"));
rPaint.setAlpha(127);
rPaint.setStyle(Paint.Style.FILL);
canvas.drawRect(0, 0, 100, 100, rPaint);
图像是使用以下库渲染的 SVG 图形: http://code.google.com/p/svg-android/
我想我找到了错误。问题是 SurfaceView。它的背景是黑色的。当我使用上面的代码并将其显示在 ImageView 上并且 ImageView 后面的 UI 元素的背景颜色为黑色时,会出现相同的半透明错误。 SurfaceView 的背景颜色始终为黑色。如果我使用 setBackgroundColor 将其更改为白色,SurfaceView 将变为白色,但白色背景将绘制在使用 OpenGL 绘制的所有其他图像之上。我认为这些必须切换。首先应该绘制背景颜色,然后是 OpenGL 的东西。
【问题讨论】:
标签: android antialiasing android-canvas