Chaque fois que j'utilise ce code, rien n'est dessiné. Je dois dessiner un bitmap à l'intérieur d'un rectangle spécifié.
canvas.drawBitmap(MyBitmap, null, rectangle, null)
J'ai regardé en ligne mais je ne trouve pas beaucoup d'aide.
MODIFIER
La réponse d'origine est incorrecte . Vous pouvez utiliser sourceRect pour spécifier une partie d'un bitmap à dessiner . Elle peut être nulle, auquel cas toute l'image sera utilisée.
Selon le commentaire de la friteuse qu'il dessinait sous quelque chose, je vais ajouter une note à ce sujet.
drawBitmap(bitmap, srcRect, destRect, Paint)
ne gère pas Z ordering (depth)
et l’ordre d’appel dessine en fonction des objets.
Si vous avez 3 formes à dessiner, carré, triangle et cercle. Si vous voulez que le carré soit au sommet, vous devez le tracer en dernier.
Vous n'êtes spécifié aucune source, donc ce n'est rien dessiné.
Exemple:
Vous avez un bitmap 100x100 pixels. Vous voulez dessiner le bitmap entier.
canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null);
Vous voulez dessiner uniquement la moitié gauche du bitmap.
canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null);
Vous devez spécifier le rect de la source, qui peut être un rectangle compris entre 0,0 et la largeur et la hauteur du bitmap.
L'élément principal à retenir lors de la définition du rect est:
Le rect est en coordonnées d'écran (positif Y vers le bas) ...
Je trouve utile de penser aux arguments de Rect
(left, top, right, bottom)
comme
(X, Y, X + Width, Y + Height)
où X, Y est le coin supérieur gauche de l'image Sprite.
REMARQUE: Si vous souhaitez centrer l'image sur un emplacement particulier, n'oubliez pas de décaler ces valeurs de moitié par la largeur et la hauteur de l'image-objet. Par exemple:
int halfWidth = Width/2;
int halfHeight = Height/2
Rect dstRectForRender = new Rect( X - halfWidth, Y - halfHeight, X + halfWidth, Y + halfHeight );
canvas.drawBitmap ( someBitmap, null, dstRectForRender, null );
Ceci utilise l'image originale entière (puisque src rect est null) et la redimensionne pour l'adapter à la taille et à la position de dstRectForRender ... en utilisant la peinture par défaut.
Je ne sais pas pourquoi mais cela a fonctionné pour moi!
Rect rectangle = new Rect(0,0,100,100);
canvas.drawBitmap(bitmap, null, rectangle, null);
Merci:)