1
Graphique / sf::Text Local Bounds innatendues
« le: Mai 27, 2018, 07:41:44 am »
Salut, j'ai un comportement bizarre avec sf::text (plusieurs en fait, mais un sel que je n'arrive pas a regler).
A chaque fois que je cree un text, quelle que soit la police, lorsque j'utilise setPosition, le texte s'affiche légerement décalé, je me suis amusé à afficher sa bounding box pour voir (avec getLocalBounds pour sa taille et getSize pour sa position) et je me retrouve avec ce résultat incompréhensible :
J'ai vérifie plusieurs choses :
-L'origine est bien en 0, 0
-Si j'utilise getPosition au moment de l'affichage j'ai bien la position de la bounding box (la ou le texte devrait être)
-Si j'utilise getlocalBounds je vois que top est à 16 (ce qui explique le décalage) mais je ne sais ni d'ou ca viens, ni comment changer cette valeur
-J'ai repris 3 autres projets ou j'ai utilisé sfml, j'ai ajouté un texte simple et affiché leur bounding box, a chaque fois j'ai un décalage qui varie sur X entre 0 et 1 et sur Y entre 0 et 20, et je n'arrive pas a l'expliquer du tout.
-J'ai essayé sur chaque projet d'utiliser Arial pour voir si c’était ma font qui avait un problème : même résultats
Pour info je suis sous Windows 10 64 bits, j'ai compilé sfml avec la dernière version de MingW64 et je compile en ligne de commande avec un packet Atom que j'ai modifié (mais je pense pas que ça change grand chose).
Voilà en espérant que vous ayez une solution, parce que je ne comprends pas du tout d’où viens le problème ^^
Edit : J'ai une solution (mais pas tres clean) qui consiste a faire ça a chaque fois que la position du texte est update
Ce qui donne le resultat :
(pour l'autre problème, lorsqu'on stocke une font dans une struct et qu'on garde les strucs sous forme de pointeur (les anciens pas les automatiques) dans une classe pour manager soit même la mémoire, le texte clignote et le programme crash de manière random comme s'il perdait l'adresse de la font, du coup comme je n'utilise pas tant de fonts, je les charge en plusieurs fois si besoin)
A chaque fois que je cree un text, quelle que soit la police, lorsque j'utilise setPosition, le texte s'affiche légerement décalé, je me suis amusé à afficher sa bounding box pour voir (avec getLocalBounds pour sa taille et getSize pour sa position) et je me retrouve avec ce résultat incompréhensible :
J'ai vérifie plusieurs choses :
-L'origine est bien en 0, 0
-Si j'utilise getPosition au moment de l'affichage j'ai bien la position de la bounding box (la ou le texte devrait être)
-Si j'utilise getlocalBounds je vois que top est à 16 (ce qui explique le décalage) mais je ne sais ni d'ou ca viens, ni comment changer cette valeur
-J'ai repris 3 autres projets ou j'ai utilisé sfml, j'ai ajouté un texte simple et affiché leur bounding box, a chaque fois j'ai un décalage qui varie sur X entre 0 et 1 et sur Y entre 0 et 20, et je n'arrive pas a l'expliquer du tout.
-J'ai essayé sur chaque projet d'utiliser Arial pour voir si c’était ma font qui avait un problème : même résultats
Pour info je suis sous Windows 10 64 bits, j'ai compilé sfml avec la dernière version de MingW64 et je compile en ligne de commande avec un packet Atom que j'ai modifié (mais je pense pas que ça change grand chose).
Voilà en espérant que vous ayez une solution, parce que je ne comprends pas du tout d’où viens le problème ^^
Edit : J'ai une solution (mais pas tres clean) qui consiste a faire ça a chaque fois que la position du texte est update
Citer
text.setPosition(text.getPosition().x, text.getPosition().y - text.getLocalBounds().top);
Ce qui donne le resultat :
(pour l'autre problème, lorsqu'on stocke une font dans une struct et qu'on garde les strucs sous forme de pointeur (les anciens pas les automatiques) dans une classe pour manager soit même la mémoire, le texte clignote et le programme crash de manière random comme s'il perdait l'adresse de la font, du coup comme je n'utilise pas tant de fonts, je les charge en plusieurs fois si besoin)