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

Auteur Sujet: Vue et position de la souris  (Lu 2001 fois)

0 Membres et 1 Invité sur ce sujet

MoonBreaker

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Vue et position de la souris
« le: Mai 23, 2015, 08:40:35 pm »
EDIT explications plus claires:

Bonjour,

j'aimerai faire un systeme de combo pour mon GUI. Une combo c'est une liste avec des éléments à l'intérieur, si il y'a plus d'éléments que de place pour les afficher, on a un scrolling verticale.
Je veux positionner ma combo à un endroit précis sur ma fenêtre (X, Y) et cette combo fait une taille précise en largeur et en hauteur (W x H).
Pour faire le scrolling je voudrai utiliser une vue car c'est ce qui me semble le plus adapté.

Dans mon code je trace un rectangle pour faire des bordures.
Pour dessiner mes éléments de ma combo, j'utilise une texture de rendu. Celle ci mesurant la largeur d'un item et la hauteur de 10 (pour pouvoir les empiler).
Je dessine ensuite mes éléments dessus.
Pour ma vue, je la dimensionne comme mon rectangle (W x H) et je la place en (W / 2, H / 2) puis je la set sur ma texture de rendu.

L'affiche est bien MAIS maintenant je veux détecter la collision avec mes éléments, pour que je sache sur lequel j'ai cliqué avec la souris.
Mais je n'arrive pas a transformer les coordonnées de la souris dans la fenêtre en coordonnées de la souris dans ma vue.

J'ai essayé d'utiliser mapPixelToCoords et meme de mettre un viewport à ma vue mais rien ne marche !

Quelq'un peut m'aider ?
Merci


=========

Bonjour,

j'ai un petit souci pour connaître la position de ma souris par rapport à ma vue.
Dans mon jeu j'utilise une vue pour faire un défilement (une combo avec la liste de mes parties dedans). Cette vue mesure 400 par 500 (donc plus petit que ma fenêtre) et est positionnée dans la fenêtre en 550,30.

Au lancement du programme j'affiche quelques informations :
view size : x=400, y=500 // Taille de la vue
view position : (200,250) // Position du centre de la vue, 200,250 normale ?
box position : (550,30) // position de la "box" dans laquelle la vue est.

J'ai regardé le tuto pour convertir les coordonnées de la souris sur la fenêtre en coordonnées sur la vue mais ça ne me donne pas ce que je veux ....
J'ai utilisé ce code :
sf::Vector2i posFen = sf::Mouse::getPosition(win);
  sf::Vector2f pos = win.mapPixelToCoords(posFen, _itemsContainer.getView());
où _itemsContainer est une sf::RenderTexture.

Est ce que je dois gérer "à la main" la position de la souris ? Sachant que j'ai un scroll sur ma vue ça va pas être évident !
Ou alors est ce que j'utilise juste mal la fonction ?

Merci !
« Modifié: Mai 24, 2015, 02:09:00 pm par MoonBreaker »

Snitteur

  • Jr. Member
  • **
  • Messages: 63
    • Voir le profil
Re : Vue et position de la souris
« Réponse #1 le: Mai 24, 2015, 11:08:00 am »
Moi pour avoir la coordonnée de la sourie je fait ceci :
sf::Vector2i Mouse_position;
Mouse_position =  sf::Mouse::getPosition().x;
Mouse_position =  sf::Mouse::getPosition().y;


MoonBreaker

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : Vue et position de la souris
« Réponse #2 le: Mai 24, 2015, 11:49:55 am »
Oui mais ca c'est la position de la souris dans la fenêtre, moi je veux dans ma vue.

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Vue et position de la souris
« Réponse #3 le: Mai 24, 2015, 10:17:35 pm »
sf::Mouse::getPosition te donne la position de la souris par rapport au coin de la fenêtre. Toi tu veux la position de la souris par rapport au coin du sprite qui contient la render texture, pour le convertir par rapport à la vue de la render texture.
Donc bref, soustrais la position de ta combo box à posFen avant de le donner à mapPixelToCoords

Je crois. :p