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

Auteur Sujet: [Text et ConvexShape] Impossible de centrer le texte  (Lu 2671 fois)

0 Membres et 1 Invité sur ce sujet

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
[Text et ConvexShape] Impossible de centrer le texte
« le: Août 26, 2012, 09:31:30 pm »
Bonjour à tous et à toutes :)

J'ai, dans mes fenêtres faites de convexShape, des objets de type sf::Text servant à afficher le titre.

Voici les opérations que je fais :
m_title.setPosition(floor(m_titleShape.getPosition().x+m_titleShape.width/2-m_title.getGlobalBounds().width/2),
                        floor(m_titleShape.getPosition().y+m_titleShape.getGlobalBounds().height/2-m_title.getGlobalBounds().height/2));
 

Ce code mets le titre à (0,0) avec la barre, le mets ensuite à (x/2,x/2), ce qui a pour effet de centrer le (0,0) du titre avec le centre de la barre et finalement, on soustrait la moitié du globalBounds en x et y pour mettre le centre du titre avec le centre de la barre.

Le problème survient lorsque je change la taille du sf::Text. Les opérations ci-haut fonctionne très bien pour une taille de de 8 à 12 pixels (le texte est pas mal centré, des fois un pixel à côté, mais lié au floor pour avoir un texte clair et non flou). Lorsque je met par exemple 20, là le texte est toujours centré sur X, mais n'est pas du tout centré sur Y. J'ai remarqué que le globalBound ne fait pas toujours la taille de la taille des caractères...

Avez-vous une solution qui fonctionne pour centrer du texte ?

merci et bonne journée ! :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [Text et ConvexShape] Impossible de centrer le texte
« Réponse #1 le: Août 26, 2012, 11:09:10 pm »
Le rectangle englobant est en effet un peu plus grand en hauteur, en gros il prend en compte la taille du caractère le plus grand, même si celui-ci ne fait pas partie de ton texte. Ceci pour que le texte reste stable sur sa ligne de base, quels que soient les caractères qui le composent.

Ca devrait être amélioré dans le futur.
Laurent Gomila - SFML developer

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
Re : [Text et ConvexShape] Impossible de centrer le texte
« Réponse #2 le: Août 28, 2012, 04:24:44 am »
D'accord. Pour ceux que ça intéresse, la solution pour centrer sur l'axe des Y est d'ajouter à la fin de la ligne :
floor(les calcul sur Y - getCharacterSize()/5)
 

J'ai remarqué que plus le texte est grand, plus le décalage en pixel vers le bas est important. Ici, si on met la taille à 30, ça va ramener le texte de 6 pixels vers le haut, ce qui fait en sorte qu'il est plus centré (pas forcément parfaitement centré, mais tout de même pas si mal pour toutes les tailles)

LowG33k

  • Newbie
  • *
  • Messages: 10
    • Live Messenger (MSN) - the-gros-malin@hotmail.fr
    • Voir le profil
Re : [Text et ConvexShape] Impossible de centrer le texte
« Réponse #3 le: Août 28, 2012, 05:50:33 pm »
Salut, si tu veut plus d'informations regarde http://en.wikipedia.org/wiki/Typeface à la section font metric. Tu comprendras pourquoi plus le texte est grand plus ton offset est grand ;) .
"La violence est le dernier refuge de l'incompétence" Salvor Hardin, maire de Terminus