Voici comment je dessine Bitmap
sur Canvas
dans mon application Android:
canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
Cependant, la Bitmap
n'est pas mise à l'échelle correctement, aucun anti-aliasing n'est effectué. Comment puis-je activer l'anti-aliasing?
Essaye ça:
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);
ou Paint.setFilterBitmap(true);
fonctionnaient tous les deux pour moi, mais soyez très prudent, il réduisait le nombre d'images par seconde (FPS) de 30FPS
à 17FPS
uniquement. Donc, s'il s'agit d'un dessin essentiel à la mission, comme dans un jeu, vous devez redimensionner l'image au moment du chargement. Ce que j'ai fait de la manière suivante:
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;
}
Avez-vous essayé de créer un objet Paint
, en appelant setAntiAlias(true)
et en le passant à la méthode drawBitmap
en tant que quatrième paramètre? Si cela ne fonctionne pas, vous devriez redimensionner l'appel drawBitmap
au lieu de redimensionner le canevas, par exemple. en utilisant drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
.
Utilisation:
canvas.drawBitmap(source, 0, 0, new Paint(Paint.ANTI_ALIAS_FLAG));