[android] Dibuja mapas de bits suavemente escalados en lienzo



Answers

Ambos Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG); o paint.setFilterBitmap(true); funcionó para mí pero ten mucho cuidado, en mi juego redujo el FPS de 30FPS a 17FPS solamente. Entonces, si se trata de un dibujo de misión crítica como en un juego, es mejor escalar la imagen en el momento de la carga. Lo que hice de la siguiente manera:

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;
}
Question

Así es como dibujo Bitmap en Canvas en mi aplicación de Android:

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

Sin embargo, el Bitmap no se escala correctamente, no se realiza ningún suavizado. ¿Cómo puedo habilitar anti-aliasing?




Utilizar:

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



Links