Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ANDROID] Canvas, déformée une image

    24 mai 2013 à 23:10:32

    Bonjour a tout,

    Alors voilà je me pose une grosse question est j'ai vraiment du mal a y répondre malgré mes innombrables recherches sur internet.

    J'ai cette image que j'ai découpé pour en extraire: les bras, les jambes le corps et la tête :

    J'aimerais savoir comment diable ici le développeur a pu déformé les bras et les jambes pour avoir:

    (j'ai fait un zoom sur l'image et j'ai enlver les détails, je suis pas expert en découpage j'ai fait de mon mieux avec paint donc ingorer s'il vous plait les pixel qui n'ont rien avoir).

    Voilà, je souhaitez savoir si il est possible de faire ça en java, et si oui si vous pouviez me donner au moins la fonction a utiliser car je sais vraiment pas quoi tapé pour trouver la réponse a mon problème.

    Merci de votre attention,

    Cordialement, Cemal

    • Partager sur Facebook
    • Partager sur Twitter
    Cordialement,
      26 mai 2013 à 20:55:46

      J'ai réussit a avancé un petit peu alors voilà ce que je veux faire plus concrètement: j'ai mit en mémoire dans des bitmap les morceaux d'images suivant: la tête le corps les bras les épaules et les jambes.

      Le nouveau problème est que lorsque je fait une rotation du bras, bien il se déplace et ne reste pas fixé a l'épaule.

      Voici mon code:

      			// le corps
                              Matrix matrix = new Matrix();
      			matrix = new Matrix();
      			matrix.reset();
      			matrix.postTranslate(-mQuads[Constantes.BODY].getWidth(), -mQuads[Constantes.BODY].getHeight() / 2); // Centers image
      			matrix.postRotate(angle[Constantes.BODY]);
      matrix.postTranslate(getPosX(), getPosY()); c.drawBitmap(mQuads[Constantes.BODY], matrix, null);
      			// le bras droit
      			matrix = new Matrix();
      			matrix.reset();
      			matrix.postTranslate(-mQuads[Constantes.BODY].getWidth(), -mQuads[Constantes.BODY].getHeight() / 2); // Centers image
      			matrix.postRotate(angle[Constantes.LEFTARM]);
      matrix.postTranslate( getPosX()+6, getPosY() + mQuads[Constantes.BODY].getHeight() / 2 - 5); c.drawBitmap(mQuads[Constantes.LEFTARM], matrix, null);
      			// le bras gauche
      			matrix = new Matrix();
      			matrix.reset();
      			matrix.postTranslate(-mQuads[Constantes.BODY].getWidth(), -mQuads[Constantes.BODY].getHeight() / 2); // Centers image
      			matrix.postRotate(angle[Constantes.RIGHTARM]);
      matrix.postTranslate( getPosX()+mQuads[Constantes.BODY].getWidth()-mQuads[Constantes.RIGHTARM].getWidth()-5, getPosY() + mQuads[Constantes.BODY].getHeight() / 2 - 5); c.drawBitmap(mQuads[Constantes.RIGHTARM], matrix, null);
                              // la main droite
      			matrix = new Matrix();
      			matrix.reset();
      			matrix.postTranslate(-mQuads[Constantes.BODY].getWidth(), -mQuads[Constantes.BODY].getHeight() / 2); // Centers image
      			matrix.postRotate(angle[Constantes.LEFTHAND], getPosX(), 
      					getPosY() + mQuads[Constantes.BODY].getHeight() / 2 - 5 + mQuads[Constantes.LEFTARM].getHeight()-5);
      			matrix.postTranslate(
      					getPosX(), 
      					getPosY() + mQuads[Constantes.BODY].getHeight() / 2 - 5 + mQuads[Constantes.LEFTARM].getHeight()-5);
      			c.drawBitmap(mQuads[Constantes.LEFTHAND], matrix, null);

      Merci encore,

      • Partager sur Facebook
      • Partager sur Twitter
      Cordialement,

      [ANDROID] Canvas, déformée une image

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown