[R] Image sur Button ne s'affiche pas

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Zoellingam
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 13 janv. 2014 01:15
Status : Hors ligne

[R] Image sur Button ne s'affiche pas

#1

Message par Zoellingam »

Bonsoir à tous, voilà mon soucis :

Je me lance dans un petit projet personnel, un jeu d'echecs sur Autoit \o/

Je n'ai pas beaucoup d'idée sur la manière d'affichier les pieces, et donc sur la manière de pouvoir les bougers ensuite.

Ma première idée est de faire 1 bouton par case, et donc de cliquer sur la case de départ, puis sur la case d'arrivée afin d'effectuer le mouvement.

Le problème est que je n'arrive pas à affichier les images des pions sur les boutons... :/

Voici mon code actuel :
► Afficher le texte
Et voici mes includes :
► Afficher le texte
Quelques explications :

La fonction "_GetBoard(false)" me renvoie mon echiquier en un tableau à une dimension. (2 dimensions si parametre = true)
La fonction "_Get1DPosFrom2D($i, $j)" me renvoie la case qui correspond d'un tableau 2D à un tableau 1D.
Le tableau "$IMG[12][3]" corresponds aux 12 pieces differents de l'echiquier. (6 blanches, 6 noirs) Voici un appercu :
► Afficher le texte
Les variables "$BP", "$WP" correspondent aux valeurs que j'attribue à chaque pieces, sachant que <Pion_Noir = -1*Pion_Blanc > et ainsi de suite.
La Variable "$caselen" correspond elle à la taille en pixel d'une piece. (40pixels)


Voici pour vous donner une idée ma fenêtre après compilation :
► Afficher le texte

Je précise aussi que j'ai utilisé ici la fonction "_GUICtrlButton_SetImage()", car j'obtenais la même 'erreur' avec la fonction "_GUICtrlSetImage()". Je n'ai d'ailleurs pas été voir les sources afin d'en apprendre un peu plus sur ce qui les differencies, mybad ?

Je vous remercies d'avance sur l'aide que vous pourrez m'apporter !

Ps: Pardonner mon orthographe, le français n'est pas ma langue maternelle.
Modifié en dernier par Zoellingam le mer. 15 janv. 2014 13:42, modifié 4 fois.
Zoellingam
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 13 janv. 2014 01:15
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#2

Message par Zoellingam »

Je pense avoir trouvé la solution (toute bête)

Code : Tout sélectionner

$hButton[$i][$j] = GUICtrlCreateButton("", $j*$caselen, $i*$caselen, $caselen, $caselen)
En

Code : Tout sélectionner

$hButton[$i][$j] = GUICtrlCreateButton("", $j*$caselen, $i*$caselen, $caselen, $caselen, $BS_BITMAP)

Je met le sujet en résolu ([R]). Si jamais quelqu'un avait une idée plus lumineuse sur la manière d'effectuer un mouvement de piece, autre qu'avec 64 bouttons, j'accepte toutes remarques/critiques/aides.

Merci encore !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Image sur Button ne s'affiche pas

#3

Message par mikell »

La manière de bouger les pièces dépend aussi de la manière dont va fonctionner le moteur de ton jeu, la gestion des coordonnées des cases etc
Le drag & drop est assez sympa
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Zoellingam
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 13 janv. 2014 01:15
Status : Hors ligne

Re: [R] Image sur Button ne s'affiche pas

#4

Message par Zoellingam »

Effectivement mikell, je pensais initialement faire un drag&drop, mais n'étant encore qu'un débutant en autoit, j'avoue avoir été dépassé par le nombre d'outil que nous proposes ce langage.

Merci beaucoup à toi, je te tiens au courant de l'avancé de ce code, en utilisant bien entendu cette méthode qui m'as l'air très prometteuse.

A bientôt !

Ps: Encore désolé pour l'orthographe, le Français n'étant pas ma langue maternelle, il est difficile pour moi de m'exprimer convenablement.




Edit:

J'essai en vain de m'approprier ce code, et j'avoue qu'il est encore un peu flou pour moi.
J'ai une fois de plus des soucis à afficher mes images (Et c'était ma question initiale \o/)

Voici mon code actuel :
► Afficher le texte
Et Voici le résultat obtenu lors de la compilation :
► Afficher le texte
J'ai l'impression de vous demander de l'aide sur un code illisible :/ S'il vous manques des informations, surtout n'hesitez pas à me demander.

Merci à vous de m'aider.

(J'ai une fois de plus édité le titre du sujet en non résolu : [..])
Modifié en dernier par Zoellingam le mar. 14 janv. 2014 07:21, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Image sur Button ne s'affiche pas

#5

Message par jguinch »

Le problème, c'est que ton code n'est pas utilisable, donc difficile de tester.

A priori, je dirais que le problème vient de là :

Code : Tout sélectionner

$pieces[$iTmp] = GuiCtrlCreateLabel("", $aaTmp[1]*$caselen, $aaTmp[0]*$caselen, $caselen, $caselen, 0x0201)
 GUICtrlSetImage($pieces[$iTmp], ($color[$i]) ? _Access($IMG[$k][$IMG_form]) :
Je ne pense pas que GUICtrlSetImage s'appliquera sur un label, tu devrais essayer de remplacer les deux lignes par une seule en utilisant GuiCtrlCreatePic()

Edit : pense à utiliser la balise Spoiler pour le code
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#6

Message par mikell »

Evidemment, j'avais utilisé des labels pour pouvoir fournir un exemple sans fichiers accessoires
Avec des images, si tu veux t'appuyer sur mon code il faut remplacer tout ce qu'il y a dedans entre Dim $pieces[32] et GuiSetState() par une construction à base de GuiCtrlCreatePic() comme l'a dit jguinch
La fonction _Drag marchera pareil

Et ton français est excellent :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Zoellingam
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 13 janv. 2014 01:15
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#7

Message par Zoellingam »

Merci pour vos réponses !

Le Drag&Drop fonctionne très bien avec les images, vous aviez raisons. Cependant, je rencontre maintenant un autre problème, je m'explique :

Je ne comprends pas comment demander à mon GUI de ne pas afficher une certaine couleur (Ici 0xff00ff)

En utilisant le Drag&Drop, mes pieces sont soient sur un fond noir, soit sur un fond blanc. Mais lorsque un pion sur case noire avance par exemple, le fond de la case doit maintenant être de couleur blanche.

J'utilise un pack d'image :
► Afficher le texte
Je vous met un liens vers ses images.


Avec cette utilisation, La couleurs est bien transparente, mais elle est completement transparente, c'est à dire que je ne vois pas la couleur du Label qui se trouve derrière. :
► Afficher le texte
Et voici mon code actuel :
► Afficher le texte
Pouriez-vous m'aiguillez sur la manière d'operer ? Existent-ils des couleurs prédéfinies pour faire ce genre de chose ? Est-ce possible ?

Merci pour vos réponses !
Fichiers joints
pink.rar
(20.15 Kio) Téléchargé 253 fois
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#8

Message par jguinch »

Je ne vais pas te répondre directement, mais ça va sans doute t'aider...

En fait, le problème que tu vas rencontrer lors du Drag, c'est que la pièce que tu déplaceras va forcément passer en dessous d'autres pièces, ce qui risque de faire un peu bizarre.
Je m'explique : à chaque fois qu'on créé un contrôle, il est toujours positionné par dessus les contrôles créés précédemment (la position Z-index s'incrémente au fur-et-à-mesure).

A ma connaissance, il n'est pas possible de forcer la position Z d'un contrôle. Le seul moyen de contournement que j'ai trouvé est de placer chaque pièce dans une GUI transparente, et gérer la position Z de chaque GUI avec _WinAPI_SetWindowPos()

Ce n'est pas vraiment la solution à ton problème, mais comme tu y seras certainement confronté, ça peut tout régler d'un coup...

J'avais utilisé cette technique pour un Puzzle, ça me convenait bien (le code est pas forcément très propre ni trop commenté)...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#9

Message par mikell »

jguinch a écrit :A ma connaissance, il n'est pas possible de forcer la position Z d'un contrôle.
Hmm ça devrait le faire en mettant

Code : Tout sélectionner

GUICtrlSetState(@GUI_CtrlId, $GUI_ONTOP)
dans la fonction Drag
Par contre la transparence est effectivement un problème
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#10

Message par jguinch »

Mikell, j'avais essayé cette solution mais ça ne fonctionne pas (en tout cas pas pour moi).

Mais j'ai écrit un peu vite quand même, car finalement ça me fait penser que j'avais quand même réglé mon problème en utilisant _WinAPI_SetWindowPos, mais comme je voulais appliquer de la transparence/opacité (WinSetTrans) j'étais parti sur ma solution de GUI.

[ur=http://www.autoitscript.com/forum/topic ... try1034570]Ici, une solution toute faite[/url], mais je sais pas quels seront les effets de bord (s'il y en a)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#11

Message par mikell »

Voilà, avec juste une rangée pour la légèreté du code
ça utilise une des images du pack et des gui, je suis pas arrivé à régler le problème de transparence avec juste des controles
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Zoellingam
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 13 janv. 2014 01:15
Status : Hors ligne

Re: [..] Image sur Button ne s'affiche pas

#12

Message par Zoellingam »

Bonjour à tous,

Tout d'abord, merci de l'efficacité de vos réponses ainsi que de votre rapidité.

Je pense avoir tout les outils nécéssaire afin de réaliser ce que je souhaite.

Je marque donc le sujet en résolu, et encore merci.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Image sur Button ne s'affiche pas

#13

Message par jguinch »

@Mikell : je suis étonnée que tu n'aies pas pensé à utiliser le style étendu $GUI_WS_EX_PARENTDRAG pour les pièce :wink: Ca aurait pu éviter de s'occuper du déplacement de la fenêtre...

Ca pourrait donner ça :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Image sur Button ne s'affiche pas

#14

Message par mikell »

C'est vrai mais alors la fonction _Drag ne permet plus de récupérer les coordonnées de la case de départ :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre