Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SFML]Centrer une chaine de caractères

    6 décembre 2007 à 10:48:55

    Bonjour,

    dans ma fenêtre de jeu, j'affiche des chaînes de caractères en utilisant les fonctions de la classe String de la librairie SFML. Le souci que j'ai est que j'aimerai centrer automatiquement ces chaînes dans ma fenêtre de rendu (la fenêtre de jeu donc).

    Or, je ne trouve pas de fonctions qui permettent de centrer mon texte, et je ne vois pas quelle méthode utiliser autrement pour centrer ce dernier.
    Si vous avez une idée m'aidant à centrer une chaîne de caractères dans ma fenêtre je suis preneur.

    Merci...
    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2007 à 10:57:43

      Je dirais que c'est un probleme de calcul !
      Tu connais :
      - la largeur de ton écran (dans lequel centrer)
      - la largeur de ta chaine

      --> Tu peux calculer facilement le bon point d'ancrage gauche pour faire en sorte que le texte soit centré :)
      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        6 décembre 2007 à 11:05:31

        Justement, c'est ce que je pensais.
        Mais je ne vois pas comment faire pour connaître la largeur de la chaîne en pixels?
        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2007 à 11:09:52

          Que te donne SFML quand tu lui demandes une chaine ?
          Une surface ? (comme SDL ?) ou une texture OpenGL ?

          Quelle fonction emploie tu pour générer un texte et le placer ? (je ne connais pas bien SFML)
          • Partager sur Facebook
          • Partager sur Twitter

          Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

            6 décembre 2007 à 11:14:28

            Ben en fait pour générer un texte et le placer en SFML, je fais:

            1. sf::String options("Options", "Ressources/Fonts/bomberman.ttf", 30);
            2. options.SetColor(cTitre);
            3. options.SetTop(375);
            4. options.SetLeft(330);


            Le troisième paramètre de sf::String options (30) est la taille de police et le premier la chaîne de caractères à afficher.
            SetTop permet d'indiquer la position par rapport au haut de la fenêtre (en pixels).
            SetLeft permet d'indiquer la position par rapport à la gauche de la fenêtre (en pixels).
            • Partager sur Facebook
            • Partager sur Twitter
              6 décembre 2007 à 11:19:46

              D'acc, je vois.

              Le probleme avec les font ttf, c'est que c'est le bordel pour calculer un width correct (ça dépend de la police, de son type : si la chasse est variable, c'est encore plus le bordel (un i est plus maigre qu'un m) )

              Essaie, a tout hasard, de voir les méthodes de la classe sf::string, voir si tu n'as pas un getwidth ou un width.
              Tu as une doc de cette classe sous la main ?
              Car si tu ne peux pas récupérer le width via la méthode, le calculer sera long et chiant (je sais ce que je dis, j'ai fait ça pour le boulot). Cependant, tu pourras toujours faire une approximation au pire.

              EDIT :
              http://sfml.sourceforge.net/documentation/classsf_1_1String.htm

              Utilise la méthode GetRect() qui te retourne une boite englobante.
              A partir de la boite englobante, tu as la largeur.
              Voila, tu as tout ce qu'il te faut !
              • Partager sur Facebook
              • Partager sur Twitter

              Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                6 décembre 2007 à 11:25:54

                Ok merci.

                Je vais essayer ça ce soir, là faut que j'aille en cours.
                Je te tiendrai au courant.
                • Partager sur Facebook
                • Partager sur Twitter
                  6 décembre 2007 à 15:48:38

                  [EDIT : pas vue la 2e partie du post de Fvirtman.]
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                  Anonyme
                    6 décembre 2007 à 15:52:16

                    @shadosan : la prochaine fois laisse le chercher un peu, il mémorisera mieux ainsi que si il y a toujours qqn pour lui mâcher le travail. ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [SFML]Centrer une chaine de caractères

                    × 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