我正在写一个纸牌游戏,需要我的卡在不同的情况下不同的大小。我存储我的图像作为位图,以便他们可以快速绘制和重绘(为动画)。
我的问题是,无论我如何尝试和缩放我的图像(无论是通过一个 Matrix. postScale,一个 Matrix. preScale,或一个 createScaledBitmap 函数) ,它们总是像素化和模糊。我知道是缩放造成了这个问题,因为在不调整大小的情况下绘制的图像看起来非常完美。
我已经完成了这两个线程中描述的每个解决方案:
在运行时调整图像大小的 android 质量
在运行时调整图像大小时的质量问题
但还是没有进展。
我用下面的代码存储我的位图(到散列表中) :
cardImages = new HashMap<Byte, Bitmap>();
cardImages.put(GameUtil.hearts_ace, BitmapFactory.decodeResource(r, R.drawable.hearts_ace));
并用这个方法(在 Card 类中)绘制它们:
public void drawCard(Canvas c)
{
//retrieve the cards image (if it doesn't already have one)
if (image == null)
image = Bitmap.createScaledBitmap(GameUtil.cardImages.get(ID),
(int)(GameUtil.standardCardSize.X*scale), (int)(GameUtil.standardCardSize.Y*scale), false);
//this code (non-scaled) looks perfect
//image = GameUtil.cardImages.get(ID);
matrix.reset();
matrix.setTranslate(position.X, position.Y);
//These methods make it look worse
//matrix.preScale(1.3f, 1.3f);
//matrix.postScale(1.3f, 1.3f);
//This code makes absolutely no difference
Paint drawPaint = new Paint();
drawPaint.setAntiAlias(false);
drawPaint.setFilterBitmap(false);
drawPaint.setDither(true);
c.drawBitmap(image, matrix, drawPaint);
}
如果你能提供点线索,我将不胜感激,谢谢