|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Guillaume GuillaumeInscription : novembre 2011 Messages : 71 ![]() |
Bonjour, je suis en train de faire un petit jeu sans prétention en VB.net.
Comme montré sur l'image jointe, j'utilise une seul picturebox pour afficher 241 pièce en isométrique. A la base je voulais mettre une picturebox par élément cela me permet de savoir quand l'utilisateur clique sur une picturebox. Mais il y avais un problème de transparence car les pièces sont posée les une sur les autres. Donc via l'objet Graphic je dessine tous les élément sur un unique picturebox. Maintenant le problème c'est que je ne peux pas savoir quand l'utilisateur clique sur un élément en sachant qu'il y aura encore beaucoup d'autre élément les un sur les autres. J'ai pensé à utiliser les coordonnées de la souris mais c'est vraiment le bordel car les pièce sont les une sur les autres et il peux y avoir 4 à 5 étages donc quasiment les mêmes coordonnées pour 4, 5 pièces. Si une personne à une idée pour ce problème je suis preneur Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Michel Devaux Inscription : janvier 2010 Messages : 102 ![]() |
Perso, je créerais une classe clsPiece intégrant l'image (et éventuellement un masque pour gérer le clic dans le cas de pièces non rectangulaires et/ou évidées), la taille, la position,...
Le jeu comporterait donc une List(of clsPiece) s'affichant dans un picturebox ou directement sur le formulaire. La List(of Piece) gèrerait l'ordre d'affichage des pièces. Au clic, on vérifierait quelle clsPiece est concernée, on la déplacerait en tête de liste à l'intérieur de List(of clsPiece) et on gèrerait son déplacement. |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Guillaume GuillaumeInscription : novembre 2011 Messages : 71 ![]() |
C'est exactement se que j'ai fait mais pour le gestion des cliques sur une pièce précise sa reste presque impossible sachant que plusieurs pièces peuvent avoir quasiment la même position.
Je pense quand même utiliser des picturebox... Pour deux raisons la première, pas de problème au niveau de l'evenement clique. La 2eme raison c'est quand l"utilisateur fera une modification il y aura seulement une picturebox a mettre a jour au lieu de redessiner l'image entière qui peut comporter 500,600 élément. Déjà avec 241 pièces j'ai un lapse de temps pour que sa ré affiche l'image. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 390 ![]() |
On peut définir des PictureBox non rectangulaires (exemple de code en C#) :
Code :
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
||
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Guillaume GuillaumeInscription : novembre 2011 Messages : 71 ![]() |
Merci graffito pour ta réponse. J'ai essayé l'idée est bonne mais le résultat n'est pas terrible.
Code :
|
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 390 ![]() |
Il me semble que les pointillés sont dus au fait que les régions ne sont pas exactement contigües. C'est peut-être dû au fait que tu n'utilises pas exactement les mêmes points (à un pixel près) pour les extrémités des segments dans les AddLine.
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Guillaume GuillaumeInscription : novembre 2011 Messages : 71 ![]() |
Avec cette méthode, je ne pense pas faire mieux que ça. J'ai bien repris les lignes avec les positions X,Y via paint.
Tu peux essayer sur un projet avec un picturebox (et une image avec) et un button : Code :
|
||
|
|
10
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Guillaume GuillaumeInscription : novembre 2011 Messages : 71 ![]() |
Bon, le problème a mon avis ne viens pas du code mais des images... En effet, mes tuiles de base dessiné avec inkscape je pouvais me permettre d’orienter les arrêtes dans l'angle que je voulais sans avoir l'impression que sa "bouffe" la forme.
GDI de VB.net, lui dessine comme paint je doit donc bien orienter les arrêtes comme montré sous l'image jointe (en noir les arrêtes bien orienté). Inkscape, Photoshop.... eux pour un trait de 1 pixel, il vont faire un trait de 3 pixel avec une couleur plus clair pour les traits de l'extérieur afin de tromper l'oeil. |
|
|
10
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Guillaume GuillaumeInscription : novembre 2011 Messages : 71 ![]() |
Voila, j'ai donc refait les tuiles avec paint.
Voici le résultat ci-joint en utilisant 1 picturebox par élément. Impécable merci Graffito. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com