Plumal
Messages postés16Date d'inscriptionjeudi 4 février 2021StatutMembreDernière intervention14 février 2021
-
4 févr. 2021 à 11:02
Whismeril
Messages postés18641Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023
-
6 févr. 2021 à 14:16
Bonjour,
Actuellement je crée un jeu d'échec. J'ai réalisé mon échiquier via des labels stocké dans un tableau de label (coordonnée X, Y pour une case A 8 par exemple).
Désormais, je souhaite afficher des pièces sur mon interface graphique.
Pour cela, j'ai vu deux solutions :
La première serait d'utiliser des images de pièces déjà existantes de les détourer (via un logiciel tel photoshop) et de les importer dans une picture box. J'ai essayé pour le roi blanc, et malgré le fait que l'image soit détouré lorsque je l'envoi sur discord par exemple, elle s'affiche avec un fond blanc sur mon interface graphique (voir lien ci dessous) :
La seconde a été d'utilisé un label, d'utiliser l'unicode et de faire en sorte que le fond du label soit le meme que pour l'échiquier.
Ainsi, j'ai fais en sorte que mon label change de parent, puis, je lui ai défini son BackColor à "transparent".
Cependant, lorsque je fais ça (après l'avoir mis en avant via la méthode BringToFront), il n'apparait pas (et j'ai bien changé la couleur du texte à Black)..
Whismeril
Messages postés18641Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 6 févr. 2021 à 13:11
La position c'est dans le repère du Parent.
Si en gros, tes picturebox qui font le damier font à peu près la taille des pièces, il faut qu'elle soit proche de 0, 0
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 4 févr. 2021 à 12:19
Bonjour
Déjà les Labels ne sont pas faits pour cela .
L'idéal est d'utiliser des PictureBox pour les cases de l'échiquier et encore mieux d'utiliser une classe qui hérite de Picturebox pour gérer les cases de l'échiquier . Dans ce dernier cas on pourrait ainsi gérer la pièce sur la case .
Pour les images des pièces il faut utiliser des images avec une couleur de fond transparente ainsi seule la pièce apparaît sur la case .
Un exemple ici : https://codes-sources.commentcamarche.net/source/102779-echecs-avec-moteur-uci-32-bits
Plumal
Messages postés16Date d'inscriptionjeudi 4 février 2021StatutMembreDernière intervention14 février 2021 Modifié le 5 févr. 2021 à 16:40
Tout d'abord merci de ta réponse.
J'ai remplacé mes labels par des PictureBox avec des BackColor que je souhaitais.
Toujours le même soucis.
De plus, je suis d'un niveau pas très elevée en POO, et le programme que tu m'as envoyé et très complexe...
Sachant que ce projet est pour les cours, mon objectif est de réussir comme mon camarade et moi avons penser.
L'idée de l'image pour les pièces me parait intéressante, mais je n'arrive pas à ne pas avoir le fond transparent sur mes pièces (jai toujours le fond blanc par défaut)
Whismeril
Messages postés18641Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 Modifié le 5 févr. 2021 à 19:35
Bonsoir
tout d'abord, même si c'est difficile à discerner pour un débutant, en C# on ne fait pas de POO.
On fait de la programmation objet, il n'y a que de l'objet, quand c'est orienté, il peut y avoir d'autres paradigmes.
Pour ton problème, j'ai rendu mon avatar transparent grace à ce site https://transparent.imageonline.co/fr/ (j'aurais pu mieux faire, mais j'ai fait vite).
Ensuite dans un formulaire au fond vert, j'ai mis deux controles, un noir et un blanc.
Puis à cheval sur ces 2 controles et un bout de formulaire, un picturebox avec backcolor transparent et l'image de mon avatar, voila ce que ça donne
On voit le fond vert à travers les controles noir et blanc, parce que le picturebox est transparent par rapport au formulaire.
Maintenant, j'aggrandi un peu (mais pas trop) le contrôle blanc (c'est un panel), je luis mets un fond rouge.
Je supprime le picturebox et j'en crée un nouveau par le code, mais cette fois je l'attache au panel
Image wish = Image.FromFile("WhisTransparent.png");
PictureBox p = new PictureBox();
p.Parent = panel1;// c'est ça la ligne importante
p.Image = wish;
p.BackColor = Color.Transparent;
p.Location = new Point(10, 10);
p.Height = wish.Height;
p.Width = wish.Width;
p.BringToFront();
Mon panel n'est pas assez haut, donc mon avatar est tronqué, mais on voit bien le rouge au travers et le vert du formulaire.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vous n’avez pas trouvé la réponse que vous recherchez ?