Я пишу карточную игру и нуждаюсь в том, чтобы мои карты были разных размеров в разных обстоятельствах. Я сохраняю свои изображения в виде растровых изображений, чтобы их можно было быстро нарисовать и перерисовать (для анимации).
Моя проблема заключается в том, что независимо от того, как я стараюсь масштабировать мои изображения (будь то через matrix.postScale, matrix.preScale или функцию createScaledBitmap), они всегда выглядят неровными и размытыми. Я знаю, что его масштабирование вызывает проблему, потому что изображения выглядят идеально при рисовании без изменения размера.
Я работал над каждым решением, описанным в этих двух потоках:
Качество и качество изображений для Android в режиме реального времени
проблемы с качеством при изменении размера изображения во время выполнения
но все равно ничего не получили.
Я сохраняю свои растровые изображения (в хэш-карту) с помощью этого кода:
cardImages = new HashMap<Byte, Bitmap>();
cardImages.put(GameUtil.hearts_ace, BitmapFactory.decodeResource(r, R.drawable.hearts_ace));
и нарисуйте их с помощью этого метода (в классе карты):
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);
}
Любое понимание было бы весьма полезным. Благодаря