我有一组小图片。如果我单独在画布上绘制这些图片,绘制质量会明显降低,与在屏幕大小的大位图上绘制并在画布上绘制该位图的情况相比,特别是线条会变形。请参见下图(右侧)。
从下面的代码中可以看出,画布还支持缩放。这个问题发生在小比例因子上。
问题是如何提高多个小图片的绘制质量,使其达到大图片的标准。
这是多个位图在画布上绘制的代码。
canvas.scale(game.mScaleFactor, game.mScaleFactor);
canvas.translate(game.mPosX, game.mPosY);
for (int i = 0; i < game.clusters.size(); i++) {
Cluster cluster = game.clusters.get(i);
canvas.drawBitmap(cluster.Picture, cluster.left,
cluster.top, canvasPaint);
}
这是单个位图的代码,game.board是一个屏幕大小的图像,上面绘制了所有的小位图。
canvas.scale(game.mScaleFactor, game.mScaleFactor);
canvas.translate(game.mPosX, game.mPosY);
canvas.drawBitmap(game.board, matrix, canvasPaint)
画笔具有以下属性。所有位图都是 Bitmap.Config.ARGB_8888。
canvasPaint.setAntiAlias(true);
canvasPaint.setFilterBitmap(true);
canvasPaint.setDither(true);`
canvasPaint.setFilterBitmap(true);
上使用了双线性过滤,因此从程序上讲,你无法改善质量。由于锯齿的丢失只在高对比度线条上才能注意到,最好的选择是在位图上动态渲染拼图轮廓路径,从原始图像中删除线条。这将为您提供一致的线条质量。 - Blindman67