2010-06-16 3 views
3

J'ai besoin d'une petite aide sur la rotation d'une image autour de son centre de l'axe parmi plusieurs images qui sont dessinées à la toile dans Android.Comment faire pivoter une image particulière parmi plusieurs images dessinées sur toile dans Android?

Je suis en train de charger les images sur la toile comme ci-dessous.

canvas.drawBitmap(mMachineBackground, 0, 0, null); 
canvas.drawBitmap(mMachineRotator, 0, 0, null); 

Je veux tourner uniquement le second bitmap autour de son centre de l'axe au lieu de tourner la toile entière (qui comprend un premier bitmap également).

Merci d'avance.

Répondre

0

Je crains que vous ne puissiez pas faire cela. En ce qui concerne ce que j'ai appris jusqu'ici, vous pouvez faire pivoter le contexte entier, mais pas un seul bitmap. La matrice de transformation pour ce que je sais ne peut être appliquée qu'à l'ensemble de la toile. (Je ne suis pas un gourou de la toile, mais je fais des recherches approfondies sur votre même question)

+0

Salut, Merci pour la réponse. Impossible de faire pivoter l'image bitmap autour de son centre d'axe en utilisant l'animation de rotation. Ou sinon. Je ferais mieux d'aller pour l'animation image par image pour obtenir la sensation d'animation de rotation souhaitée. Merci d'avance. – Andhravaala

6

Vous pouvez tourner autour de l'axe central:

Matrix matrix = new Matrix(); 

//move image 

matrix.setTranslate(getXPos() - (imageWidth/2), getYPos() - (imageHeight/2)); 

//rotate image, getXPos, getYPos are x & y coords of the image 

matrix.postRotate(angleInDegrees, getXPos() - imageWidth/2, getYPos() - imageHeight/2); 

//rotatedBMP is the image you are drawing, 

canvas.drawBitmap(rotatedBMP, matrix, Paint); 
+0

aimez-vous l'homme ... je l'ai cherché pendant 4 jours enfin votre réponse m'a donné la solution. Merci beaucoup... – Taruni

1
//Drawing the Player Canon. 
      Matrix matrix = new Matrix(); 
      //move image 
      newHeight = getHeight() - canon1[0].getHeight() - stand1.getHeight(); 
      Log.d(TAG, "New Height : " + newHeight); 
      //matrix.setTranslate(0, getHeight() - canon1[0].getHeight() + stand1.getHeight()); 
      matrix.setTranslate(-newHeight,newHeight); 

      // rotate image, getXPos, getYPos are x & y coords of the image (ANgle in degree)). 
      //matrix.postRotate(45, 0, getHeight() - canon1[0].getHeight() + stand1.getHeight()); 
      matrix.postRotate(-30,0,0); 
      //Draw function. 
      canvas.drawBitmap(canon1[0], matrix, null); 

Ce code que j'avais écrit de la référence du code ci-dessus fonctionne absolument bien.

Je suis capable de faire pivoter une image particulière sur la toile.

Questions connexes