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 !