Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème avec une rotation  (Lu 3951 fois)

0 Membres et 1 Invité sur ce sujet

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Problème avec une rotation
« le: Juillet 01, 2015, 09:01:40 pm »
Bonjour !
J'essaie de faire une classe de bouton hérité de drawable, cependant ma fonction update de mon bouton me pose des soucis, car je dois garder le texte à l'intérieur du bouton peut importe la rotation, et je ne comprend pas ce qui ne va pas :
http://pastebin.com/pCBcAKsR
La fonction intéréssante est Update()
        void update()
                        {


                                button_text.setOrigin(button_text.getGlobalBounds().width / 2,button_text.getGlobalBounds().height/2);//center origin
                                button_shape.setOrigin(button_shape.getLocalBounds().width / 2, button_shape.getLocalBounds().height/2); // "  "
                               

                                button_shape.setPosition(getPosition());
                                button_shape.setScale(getScale());
                                button_shape.setRotation(getRotation());

                                button_text.setPosition(button_shape.getPosition());
                                button_text.setRotation(getRotation());
                                button_text.setScale(getScale());
                               
                                cout << "************" << endl;
                                cout << "POS[" << button_shape.getPosition().x << ";" << button_shape.getPosition().y << "];" << endl;
                                cout << "SIZE[" << button_shape.getSize().x << ";" << button_shape.getSize().y << "];" << endl;
                                cout << "************" << endl;
                               
                        }
(avec un petit cout<< pour afficher des info pour débug ^^)

Mais elle ne marche pas, je ne comprend pas, je centre les origines et apres ça devrait aller tout seul non?
Voici un résultat:
http://prntscr.com/7nn4dl
Et avec une rotation,encore pire.
http://prntscr.com/7nn4m3
http://prntscr.com/7nn4qi


G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Problème avec une rotation
« Réponse #1 le: Juillet 01, 2015, 09:09:48 pm »
T'as utilisé getGlobalBounds au lieu de getLocalBounds je pense.

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Problème avec une rotation
« Réponse #2 le: Juillet 01, 2015, 10:08:40 pm »
button_text.setOrigin(button_text.getLocalBounds().width / 2,button_text.getLocalBounds().height*4.3);//center origin
                                button_shape.setOrigin(button_shape.getLocalBounds().width / 2, button_shape.getLocalBounds().height/2); // "  "

Avec ça, ça marche très bien merci :3

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Problème avec une rotation
« Réponse #3 le: Juillet 02, 2015, 06:07:52 pm »
Re
Apres tests, ça marche très bien cette formule..pour une taille de police 16, si l'utilisateur veut changer ça le placement est fichu, je ne trouve pas de formule pour obtenir une valeur correcte et commune :(

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec une rotation
« Réponse #4 le: Juillet 02, 2015, 06:19:15 pm »
C'est quoi ce 4.3 ?

Sinon, il faut prendre en compte left et top pour le rectangle englobant, ils ne valent pas zéro dans le cas de sf::Text.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Problème avec une rotation
« Réponse #5 le: Juillet 02, 2015, 06:31:07 pm »
4.3 c'était une valeur qui marchais pour l fontsize = 16.
Et Left/top c'est quoi?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec une rotation
« Réponse #6 le: Juillet 02, 2015, 06:43:25 pm »
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Problème avec une rotation
« Réponse #7 le: Juillet 02, 2015, 06:49:49 pm »
Oui mais je pense pas que ce me soit super utile ou alors j'ai mal compris ^^
Je veux juste positionner mon Sf::Text au milieu de mon sf::Rectangle ^^

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec une rotation
« Réponse #8 le: Juillet 03, 2015, 09:27:08 am »
Le milieu d'un rectangle, c'est (left + width / 2, top + height / 2). Si tu ne vois pas, fais un petit dessin, sur lequel le rectangle n'est pas positionné en (0, 0).
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Problème avec une rotation
« Réponse #9 le: Juillet 12, 2015, 11:46:02 am »
Re, désolé de l'inactivitées j'avais fait une pause dans le projet ^^
button_text.setOrigin((button_text.getLocalBounds().left + button_text.getLocalBounds().width) / 2, (button_text.getLocalBounds().top + button_text.getLocalBounds().height) / 2);//center origin
                                button_shape.setOrigin((button_shape.getLocalBounds().left + button_shape.getLocalBounds().width) / 2, (button_shape.getLocalBounds().top + button_shape.getLocalBounds().height)/2); // "  "
Ceci me donne:
http://prntscr.com/7rq8a9

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec une rotation
« Réponse #10 le: Juillet 12, 2015, 12:08:36 pm »
Ta formule est mauvaise, retire les parenthèses.
Laurent Gomila - SFML developer

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Problème avec une rotation
« Réponse #11 le: Juillet 12, 2015, 12:26:45 pm »
Oh, miracle ! Merci :)