在我的应用中,我将图像动态缩放到原始大小的50%。缩放时,它会显示某种拼贴(如下图所示)。图像的方形部分比相邻的瓷砖更亮,应该具有相同的颜色。它几乎没有引人注意,但它对我的应用程序来说还不够好。正方形的大小取决于缩放因子。因此,在尺寸为75%的情况下,瓷砖更小。
示例:
我的绘图代码(在我的自定义视图的onDraw中调用):
private void drawImage(Bitmap bitmap, float scaling,
Canvas canvas, float offset)
{
Matrix p = new Matrix();
Matrix m = new Matrix();
Matrix y = new Matrix();
Matrix o = new Matrix();
p.setTranslate(-bitmap.getWidth() / 2, -bitmap.getHeight() / 2);
// translation to views center (minus half height of image
// so that the bottom of the picture is in the views center.
y.setTranslate(getWidth() / 2, getHeight() / 2);
// offset translation.
o.setTranslate(offset, 0);
m.setScale(scaling, scaling);
m.preConcat(p);
m.postConcat(y);
m.postConcat(o);
// draw image
canvas.drawBitmap(bitmap, m, null);
}
有谁知道如何防止这种拼贴?
答案 0 :(得分:1)
您是在设备上还是在模拟器中看到它?因为在设备上,一些低质量的GPU可以引入“抖动”效果,缺少GPU或模拟器的设备不会产生。
解决方案是在Photoshop或Bitmap API中预先缩放图像。
答案 1 :(得分:1)
您是否尝试canvas.drawBitmap(bitmap, m, new Paint(Paint.FILTER_BITMAP_FLAG))
here。