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

Auteur Sujet: sf::Text coordonnés du coins bas droit  (Lu 2339 fois)

0 Membres et 1 Invité sur ce sujet

imote

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
sf::Text coordonnés du coins bas droit
« le: Avril 13, 2014, 01:07:40 am »
Bonjour !

J'ai un gros soucis devant moi. J'ai un élément texte (sf::Text) qui contient un texte. Le texte peut contenir l'élément suivant "\n" et donc effectuer un retour à la ligne automatique. J'aimerai que SFML me donne le coins bas droit de l'élément texte en prenant en compte le saut de ligne ce qui n'est apparament pas le cas.
J'ai essayé avec getCharacterPos et avec getGlobalBounds mais aucun succès.
Ou alors j'utilise mal les fonctions.

Merci de votre aide,
Cordialement

math1992

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
    • E-mail
Re : sf::Text coordonnés du coins bas droit
« Réponse #1 le: Avril 13, 2014, 04:48:51 am »
Même avec un retour à la ligne tu devrais être en mesure d'obtenir la coordonnée désirée.

Il faudrait voir la partie de ton code dans laquelle tu calcul les coordonnées. Mais cela devrait ressembler à:

//Declaration of sf::Text Text
sf::FloatRect Bounds = Text.getGlobalBounds();
sf::Vector2f Pos( Bounds.left + Bounds.width, Bounds.top + Bounds.height );
 

imote

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re : sf::Text coordonnés du coins bas droit
« Réponse #2 le: Avril 13, 2014, 09:25:07 am »
Ce qui m'intérésse est la position y du dernier caractère ou de l'élément entier. En obtenant cette position avec ta méthode que j'ai déjà testé ou avec la méthode qui permet d'obtenir la position du dernier caractère, j'obtient les mêmes cordonnés y : 13. A chaque fois. Ces coordonnés correspondent à la premier ligne et non à la dernière ligne.
Je me demande s'il n'y aurai pas un bug dans la SFML ?
J'ai tout essayé et à chaque fois, la valeur y retourné est celle de la première ligne.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Text coordonnés du coins bas droit
« Réponse #3 le: Avril 13, 2014, 10:26:38 am »
Peux-tu écrire un code complet minimal qui reproduit le problème ?
Laurent Gomila - SFML developer

imote

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re : sf::Text coordonnés du coins bas droit
« Réponse #4 le: Avril 13, 2014, 10:47:16 am »
oui bien sur, autant pour moi.
Le bug se produit de cette manière, preuve en image :

#include <SFML/Graphics.hpp>
#include <iostream>

int main()
{
        sf::RenderWindow window(sf::VideoMode(300, 250), "SFML works!");
       
        sf::Font font;
        font.loadFromFile("lucida_console_regular.ttf");

        sf::Text text;
        text.setString("Bonjour :D\nJe suis une ligne supplémentaire !");
        text.setCharacterSize(13);
        text.setFont(font);

        std::cout << text.findCharacterPos(text.getString().getSize()).y;

        while (window.isOpen())
        {
                sf::Event event;
                while (window.pollEvent(event))
                {
                        if (event.type == sf::Event::Closed)
                                window.close();
                }

                window.clear();
                window.draw(text);
                window.display();
        }

        return 0;
}

Avec l'image : http://puu.sh/86LZX.png

La position y connu est 13. Hors nous avons deux lignes pour une taille en pixel de 13 par caractères. Donc nous devrions avoir 26 en position y. Non ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Text coordonnés du coins bas droit
« Réponse #5 le: Avril 13, 2014, 11:25:22 am »
Ben non. La première ligne est à la position 0, la seconde à la position 13.
Laurent Gomila - SFML developer

imote

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re : sf::Text coordonnés du coins bas droit
« Réponse #6 le: Avril 13, 2014, 01:41:12 pm »
Ha oui en effet.
Bon, j'ai totalement réécrit le code en question, et après plusieurs heures il marche enfin.
Désolé du dérangement et merci ;)