Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: dworkin le Mars 09, 2016, 10:26:29 pm

Titre: Entourer un texte d'une box (calcul de la taille d'affichage d'un texte)
Posté par: dworkin le Mars 09, 2016, 10:26:29 pm
Bonjour à tous,
pour la programmation d'un petit jeu de type point and click, je chercher à faire afficher une box autour d'un texte, de manière à le rendre plus lisible.
J'ai fait ce code :
        Texture texture;
        string image = "./images/";
        image += modele->getCarte()->getLieu().image;
        texture.loadFromFile(image);
        Sprite sprite;
        sprite.setTexture(texture);
        maFenetre->clear();
        maFenetre->draw(sprite);

            RectangleShape box =RectangleShape (Vector2f(12*modele->getMessage()->texte.size(),36));
            box.setFillColor (Color(0,0,0,128));
            box.setPosition(modele->getMessage()->coord.x-6, modele->getMessage()->coord.y-3);
            maFenetre->draw(box);

            sf::Text text;
            text.setFont(fonts[0]);
            text.setString(modele->getMessage()->texte);
            text.setCharacterSize(24);
            text.setPosition(modele->getMessage()->coord.x, modele->getMessage()->coord.y);
            maFenetre->draw(text);

Ca ne marche pas si mal que ça, sauf que le texte n'est jamais bien entouré : Selon les caractères que j'utilise, ma formule : 12*modele->getMessage()->texte.size()
va créer une box trop large ou trop étroite.
Y-a-t'il une solution pour calculer correctement la taille qu'un texte va prendre sur l'écran?
Titre: Re : Entourer un texte d'une box (calcul de la taille d'affichage d'un texte)
Posté par: G. le Mars 10, 2016, 02:11:28 am
Utilise sf::Text::getGlobalBounds() (http://www.sfml-dev.org/documentation/2.3.2-fr/classsf_1_1Text.php#a95d732f58bd12bf7ec388b106f3729ba), ça te donnera le rectangle englobant ton texte. (et donc sa largeur)
Titre: Re : Entourer un texte d'une box (calcul de la taille d'affichage d'un texte)
Posté par: dworkin le Mars 10, 2016, 11:58:24 am
C'est exactement ce dont j'avais besoin :-)
J'avais raté cette fonction en lisant la doc  :-[
Merci beaucoup.  :)