Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: r0d le Septembre 25, 2015, 06:31:10 pm

Titre: [résolu] getMousePos() et redimensionnement de la fenêtre
Posté par: r0d le Septembre 25, 2015, 06:31:10 pm
Bonjour,

Imaginons que j'ai une RenderWindow dans laquelle j'affiche un cercle de rayon r, de centre (x,y).
J'ai une petite fonction qui calcule si la souris passe dessus le cercle en question. Cette fonction, utilise la fonction statique: sf::Mouse::getPosition(myWindow), et calcule, en fonction de la position et du rayon du cercle, si la souris est au dessus ou non.
Problème: lorsque je resize la fenêtre, le calcul de cette fonction n'est plus valide, puisque le repère de coordonnées de la souris change, alors que la position et le rayon du cercle ne changent pas.

Je suis parvenu à contourner le problème mais la solution que j'ai trouvé ne me convient pas. Elle consiste à conserver en mémoire un ratio, qui représente le resize de la RenderWindow, puis d'appliquer ce ratio à chaque fois que j'appelle getPosition(). Cette solution est un peu lourde je trouve, mais aussi je perds de l'info à chaque resize, et si on resize la fenêtre trop souvent, le ratio finit par être faux (propagation de l'erreur).

Je viens ici pour vous demander s'il n'y aurait pas de solution plus simple, plus propre.
Merci :)

Titre: Re : getMousePos() et redimensionnement de la fenêtre
Posté par: Laurent le Septembre 25, 2015, 08:24:10 pm
http://www.sfml-dev.org/tutorials/2.3/graphics-view-fr.php#conversions-de-coordonncees
Titre: Re : getMousePos() et redimensionnement de la fenêtre
Posté par: r0d le Septembre 25, 2015, 08:44:57 pm
Merci Laurent, c'est exactement ce que je cherchais :)
J'avais pourtant bien fais le tour des tutos... désolé  :-[