Je voudrais "décaler" un bitmap d'un certain décalage x et y. Par shift, je veux dire, si j'ai un bitmap de 300x500, et que je le décalque par un décalage de -50, je m'attendrais à ce que chaque pixel monte de 50 pixels, et un rectangle de 300x50 pixels soit vide, au bas du bitmap . Le code ci-dessous fonctionne très bien si shiftX et shiftY sont négatifs, mais ne fonctionne pas du tout pour les valeurs positives. Je ne sais pas pourquoi?Android: comment déplacer un bitmap?
Rect srcRect = new Rect(-shiftX, -shiftY, mBitmap.getWidth(), mBitmap.getHeight());
Rect destRect = new Rect(srcRect);
destRect.offset(shiftX, shiftY);
Canvas bitmapCanvas = new Canvas(mBitmap);
bitmapCanvas.drawBitmap(mBitmap, srcRect, destRect, null);
J'ai essayé plusieurs versions différentes de cela. Il semble que tenter de traduire un bitmap avec un y positif produit toujours des ordures. Dans cet exemple simple, un Shifty négatif donne le comportement attendu, mais un Shifty positif donne un résultat des ordures:
Canvas bitmapCanvas = new Canvas(mBitmap);
bitmapCanvas.drawBitmap(mBitmap, 0, shiftY, null);
* Mise à jour. Ceci est résolu par le code ci-dessous. Cependant, ceci n'est pas efficace en mémoire. Des suggestions pour une meilleure solution?
Canvas bitmapCanvas = new Canvas(mBitmap);
Bitmap tempBitmap = mBitmap.copy(CONFIG.ARGB_8888, false);
bitmapCanvas.drawBitmap(tempBitmap, 0, shiftY, null);
'ne signifie pas work' quoi exactement? Qu'est ce que tu obtiens? – WarrenFaith
produit un résultat apparemment vide – ab11
pourquoi créez-vous un nouveau canevas? – WarrenFaith