Нарисуйте плавно масштабированные растровые изображения на холсте

Вот как я рисую Bitmap на Canvas в своем приложении для Android:

 canvas.save(); canvas.scale(scale, scale, x, y); canvas.drawBitmap(bitmap, x, y, null); canvas.restore(); 

Однако Bitmap не масштабируется плавно, а сглаживание не выполняется. Как включить сглаживание?

Solutions Collecting From Web of "Нарисуйте плавно масштабированные растровые изображения на холсте"

Попробуй это:

 Paint paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); canvas.drawBitmap(bitmap, x, y, paint); 

Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG); Или paint.setFilterBitmap(true); Работал на меня, но будьте очень осторожны, в моей игре он сократил FPS с 30FPS до 17FPS . Поэтому, если это критический критический рисунок, как в игре, вы лучше масштабируете изображение во время загрузки. Что я сделал следующим образом:

 public Bitmap getImage (int id, int width, int height) { Bitmap bmp = BitmapFactory.decodeResource( getResources(), id ); Bitmap img = Bitmap.createScaledBitmap( bmp, width, height, true ); bmp.recycle(); return img; } 

Вы пытались создать объект Paint , вызвав setAntiAlias(true) на нем и передав его методу drawBitmap в качестве 4-го параметра? Если это не работает, я думаю, вы должны уменьшить масштаб drawBitmap запроса вместо масштабирования Canvas, например, используя drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) .

Использование:

 canvas.drawBitmap(source, 0, 0, new Paint(Paint.ANTI_ALIAS_FLAG));