Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite  (Lu 2497 fois)

0 Membres et 1 Invité sur ce sujet

Nikogram

  • Newbie
  • *
  • Messages: 39
    • Voir le profil
    • E-mail
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.
« Modifié: Octobre 21, 2012, 08:30:45 pm par Nikogram »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
« Réponse #1 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, ...).
Laurent Gomila - SFML developer

Nikogram

  • Newbie
  • *
  • Messages: 39
    • Voir le profil
    • E-mail
Re : Décalage d'un pixel avec le pointeur de la souris et un sf::Sprite
« Réponse #2 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.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
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é.
Laurent Gomila - SFML developer

Nikogram

  • Newbie
  • *
  • Messages: 39
    • Voir le profil
    • E-mail
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 ;)