これが私のAndroidアプリでの利用Bitmap
方法です。Canvas
canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
ただし、Bitmap
はスムーズにスケーリングされないため、アンチエイリアシングは実行されません。アンチエイリアシングを有効にするにはどうすればよいですか?
これが私のAndroidアプリでの利用Bitmap
方法です。Canvas
canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
ただし、Bitmap
はスムーズにスケーリングされないため、アンチエイリアシングは実行されません。アンチエイリアシングを有効にするにはどうすればよいですか?
これを試して:
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);
または私のために働いたが、非常に注意してください、私のゲームでは、FPSをからのみpaint.setFilterBitmap(true);
に削減しました。したがって、ゲームのようにミッションクリティカルな描画である場合は、読み込み時に画像を拡大縮小する方が適切です。私は次の方法でこれを行いました: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
オブジェクトを作成して呼び出し、4番目のパラメーターとしてメソッドsetAntiAlias(true)
に渡してみましたか?これが機能しない場合は、Canvasをスケーリングするのではなく、たとえばを使用して呼び出しをdrawBitmap
スケールダウンする必要があると思います。drawBitmap
drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
必要なコードは1行だけです。
canvas.drawBitmap(bitmap, x, y, new Paint(Paint.ANTI_ALIAS_FLAG));
5行ではありません