Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Nikogram le Octobre 21, 2012, 01:40:11 pm

Titre: [Résolu] Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
Posté par: Nikogram le Octobre 21, 2012, 01:40:11 pm
Bonjour à tous.
Dans mon jeu j'ai un petit soucis de précision. En effet quand je veux récupérer les coordonnées relatives du pointeur de la souris par rapport à un sprite (les coordonnées seront donc à (0;0) quand la souris sera en haut à gauche du sprite), j'ai un décalage de 1px pour les abscisses.
Pour récupérer les coordonnées relatives de la souris je fais :
sf::Vector2f coordonneesRelativesSouris(sf::Mouse::getPosition(m_fenetre).x - getPosition().x, sf::Mouse::getPosition(m_fenetre).y - getPosition().y);
(je me trouve dans une classe héritant de sf::Sprite)
Quand la souris est au bord gauche du sprite, coordonneesRelativesSouris.x est égal à 1 alors qu'il devrait faire 0.

Bien sûr pour corriger le problème il suffit d'enlever 1 aux coordonnées en x. Cependant j'aimerais savoir d'où vient ce décalage. Est-ce que ça vient de la fonction getPosition() de la souris ou du sprite, ou est ce que le pixel pointé par la souris ne correspond pas au pixel du curseur se trouvant en haut à gauche ? A moins qu'il y ai une colonne de pixels de créée avant la texture du sprite ?
Merci d'avance.

PS : j'utilise SFML 2.0 RC.
Titre: Re : Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
Posté par: Laurent le Octobre 21, 2012, 06:32:43 pm
Tu arrives vraiment à voir un décalage de 1 pixel ?

Citer
est ce que le pixel pointé par la souris ne correspond pas au pixel du curseur se trouvant en haut à gauche ?
Ca c'est spécifique à chaque curseur, ça peut être n'importe où (au milieu, en bas à droite, décalé d'un pixel, ...).
Titre: Re : Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
Posté par: Nikogram le Octobre 21, 2012, 08:29:39 pm
Citer
Tu arrives vraiment à voir un décalage de 1 pixel ?
Malgré du 1680*945 sur un écran de 18 pouces, les pixels de l'écran sont visibles à l'œil nu (bon faut bien sûr se rapprocher un peu de l'écran). Et c'est très visible avec la loupe Windows.

Citer
Citer
est ce que le pixel pointé par la souris ne correspond pas au pixel du curseur se trouvant en haut à gauche ?
Ca c'est spécifique à chaque curseur, ça peut être n'importe où (au milieu, en bas à droite, décalé d'un pixel, ...).
D'accord. Je croyais que c'était obligatoirement celui en haut à gauche.
Bon autrement j'ai fait mon propre curseur pour être sur d'être sur le bon pixel quelque soit la machine.

En tout cas je te remercie de m'avoir répondu :)

PS : peut-être que tu trouve que 1px c'est négligeable, mais je souhaite avoir un maximum de précision à la souris.
Titre: Re : [Résolu] Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
Posté par: Laurent le Octobre 21, 2012, 08:33:57 pm
Je n'ai pas dit que c'était négligeable, juste qu'il pouvait être difficile d'affirmer qu'il y avait effectivement un décalage ; et même dans ce cas, le décalage est tellement infime que les causes peuvent être multiples ;)

Essaye d'afficher ton sprite en (0, 0), dans le coin haut-gauche de la fenêtre. Là tu verras si c'est le sprite ou bien le curseur qui est décalé.
Titre: Re : [Résolu] Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
Posté par: Nikogram le Octobre 22, 2012, 10:06:20 pm
J'ai testé et c'est bien le curseur.
Mais bon vu que j'ai fait mon propre pointeur (pointeur en croix avec comme centre le pixel pointé par la souris), il n'y a plus de soucis de précision et je ne suis plus dépendant du curseur par défaut ;)