Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Assouan le Avril 01, 2012, 05:20:21 pm

Titre: [résolu] La fonction Origin (est inversé ?)
Posté par: Assouan le Avril 01, 2012, 05:20:21 pm
Par exemple, si j'ai un texte, en position 100,100 (et je veux lui créer un décalage de 50,50) pour qu'il s'affiche en 150,150

Et bien je dois faire : SetOrigin(-50,-50);
Au lieu de : SetOrigin(50,50);

Es-ce normal que sa fonctionne inversement ?
Titre: Re: La fonction Origin (est inversé ?)
Posté par: Laurent le Avril 01, 2012, 07:27:01 pm
Oui, car tu attaques la mauvaise propriété. Il faut changer la position, pas l'origine.
Titre: Re : La fonction Origin (est inversé ?)
Posté par: virelio le Avril 07, 2012, 06:21:30 pm
Bonjour,

Tiens justement...
J'utilise le code ci-dessous pour centrer une lettre sur la position demiL, demiH.
Le centrage horizontal est correct mais le centrage vertical est mauvais et différent selon que la lettre est ronde (O, Q C) ou non.

sf::Glyph glyph = myFont.getGlyph( (sf::Uint32)myString[0], myText.getCharacterSize(), false);
    sf::IntRect r = glyph.bounds;
    myText.setPosition(demiL - (r.width - r.left)/2 - r.left, demiH + (r.top - r.height)/2 );

Quelle est la bonne méthode et à quoi correspond, du point de vue position r.top et r.left (r = glyph.bounds)

Je poste ici car il me semble que nous nous posons la même question.
Titre: Re : Re: La fonction Origin (est inversé ?)
Posté par: Assouan le Avril 09, 2012, 01:24:11 am
Oui, car tu attaques la mauvaise propriété. Il faut changer la position, pas l'origine.
Alors à quoi sert la fonction Origin ?

Bonjour,

Tiens justement...
J'utilise le code ci-dessous pour centrer une lettre sur la position demiL, demiH.
Le centrage horizontal est correct mais le centrage vertical est mauvais et différent selon que la lettre est ronde (O, Q C) ou non.

sf::Glyph glyph = myFont.getGlyph( (sf::Uint32)myString[0], myText.getCharacterSize(), false);
    sf::IntRect r = glyph.bounds;
    myText.setPosition(demiL - (r.width - r.left)/2 - r.left, demiH + (r.top - r.height)/2 );

Quelle est la bonne méthode et à quoi correspond, du point de vue position r.top et r.left (r = glyph.bounds)

Je poste ici car il me semble que nous nous posons la même question.

Pourquoi ne pas simplement faire :
myText.SetPosition(demiL - (myText.GetGlobalBounds().Width / 2), demiH - (myText.GetGlobalBounds().Height / 2));
Titre: Re : La fonction Origin (est inversé ?)
Posté par: Orwel le Avril 09, 2012, 02:31:03 am
Citer
Alors à quoi sert la fonction Origin ?

L'origine ne modifie pas uniquement la position, mais aussi les rotations.
Moi je l'utilise pour superposer mes objets physiques et graphiques.
Titre: Re : La fonction Origin (est inversé ?)
Posté par: Laurent le Avril 09, 2012, 09:54:37 am
Citer
Alors à quoi sert la fonction Origin ?
C'est marqué dans la doc non ? :P

Citer
Je poste ici car il me semble que nous nous posons la même question.
Pas vraiment non. C'est malin, maintenant on a deux problèmes mélangés, et j'ai la flemme de les démêler.
Titre: Re : La fonction Origin (est inversé ?)
Posté par: Assouan le Avril 09, 2012, 01:35:02 pm
Aaaah oui, d’accord ! c'est comme SetCenter de la version 1.6 !

Sa permet de dire d'où la position ou rotation et ... se fait ^^

Merci !
Titre: Re : La fonction Origin (est inversé ?)
Posté par: virelio le Avril 09, 2012, 02:39:41 pm
de Laurent
Citer
Pas vraiment non. C'est malin, maintenant on a deux problèmes mélangés, et j'ai la flemme de les démêler.

Ok, je crée un nouveau post...   (http://www.sfml-dev.org/forums/Smileys/default/embarrassed.gif)