Meilleur auteur de réponses
Convertir un tablelayoutpanel en image

Question
-
Bonjour, cet après-midi je me suis dit qu'il fallait que je progresse en échec, donc j'ai pris l'image d'un échiquier, je l'ai copié et imprimé. Sauf qu'il fallait dessiner en miniature et que je suis nul en dessin (plus tout le découpage), donc j'ai rapidement abandonné l'idée.
A la place, je me suis dit que je pourrais faire un programme ou je place mes pions sur l'échiquier. Mais il faut que je modifie l'image dans le programme du coup, et je ne sais pas comment faire. J'ai bien eu l'idée de mettre un tableau avec autant de cases que de cases sur un échiquier, mais à partir de là je me suis demandé comment je fais pour l'enregistrer en image (png de préférence). Je suis un peu nouveau et je sèche complètement, donc toute réponse même celle que vous pensez simplissime sont les bienvenues. Merci de vos réponses.
Réponses
-
Bonjour,
Voici un exemple crée un échiquier et le sauvegarder le échiquier dans un Panel :
en image :
Voici le code :
Public Class Form1 Dim Bouton(64) As Button Dim Index As Integer = 0 Dim Ligne(4) As Panel Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load CrééTableau(0, 0) Panel1.Size = New Size(403, 403) End Sub Private Sub CrééTableau(ByVal PosX As Integer, ByVal PosY As Integer) 'Ligne gauche Ligne(0) = New Panel With Ligne(0) .Size = New Size(1, (50 * 8)) .Location = New Point(PosX, PosY) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(0)) 'Ligne droite Ligne(1) = New Panel With Ligne(1) .Size = New Size(1, (50 * 8)) .Location = New Point(PosX + (50 * 8), PosY) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(1)) 'Ligne haut Ligne(2) = New Panel With Ligne(2) .Size = New Size((50 * 8), 1) .Location = New Point(PosX, PosY) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(2)) 'Ligne bas Ligne(3) = New Panel With Ligne(3) .Size = New Size((50 * 8) + 1, 1) .Location = New Point(PosX, PosY + (50 * 8)) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(3)) For a As Integer = 0 To 7 For b As Integer = 0 To 7 Bouton(Index) = New Button With Bouton(Index) .Size = New Size(50, 50) .Location = New Point((a * 50) + 1 + PosX, (b * 50) + 1 + PosY) .FlatAppearance.BorderSize = 0 .FlatStyle = FlatStyle.Flat End With Select Case a Case 0, 2, 4, 6 Select Case b Case 0, 2, 4, 6 Bouton(Index).BackColor = Color.White Case 1, 3, 5, 7 Bouton(Index).BackColor = Color.Black End Select Case 1, 3, 5, 7 Select Case b Case 0, 2, 4, 6 Bouton(Index).BackColor = Color.Black Case 1, 3, 5, 7 Bouton(Index).BackColor = Color.White End Select End Select Me.Panel1.Controls.Add(Bouton(Index)) Index += 1 Next Next End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim bmp As New Bitmap(Panel1.Width, Panel1.Height) Panel1.DrawToBitmap(bmp, New Rectangle(New Point(0, 0), Panel1.Size)) bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop & "/Echec.png", System.Drawing.Imaging.ImageFormat.Png) MsgBox("Fichier save!") End Sub End Class
J’espère que j'ai bien répondu a votre question,
Cordialement,
- Marqué comme réponse NathanTheProgammer jeudi 12 avril 2018 16:08
Toutes les réponses
-
Bonjour,
Voici un exemple crée un échiquier et le sauvegarder le échiquier dans un Panel :
en image :
Voici le code :
Public Class Form1 Dim Bouton(64) As Button Dim Index As Integer = 0 Dim Ligne(4) As Panel Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load CrééTableau(0, 0) Panel1.Size = New Size(403, 403) End Sub Private Sub CrééTableau(ByVal PosX As Integer, ByVal PosY As Integer) 'Ligne gauche Ligne(0) = New Panel With Ligne(0) .Size = New Size(1, (50 * 8)) .Location = New Point(PosX, PosY) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(0)) 'Ligne droite Ligne(1) = New Panel With Ligne(1) .Size = New Size(1, (50 * 8)) .Location = New Point(PosX + (50 * 8), PosY) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(1)) 'Ligne haut Ligne(2) = New Panel With Ligne(2) .Size = New Size((50 * 8), 1) .Location = New Point(PosX, PosY) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(2)) 'Ligne bas Ligne(3) = New Panel With Ligne(3) .Size = New Size((50 * 8) + 1, 1) .Location = New Point(PosX, PosY + (50 * 8)) .BorderStyle = BorderStyle.FixedSingle End With Me.Panel1.Controls.Add(Ligne(3)) For a As Integer = 0 To 7 For b As Integer = 0 To 7 Bouton(Index) = New Button With Bouton(Index) .Size = New Size(50, 50) .Location = New Point((a * 50) + 1 + PosX, (b * 50) + 1 + PosY) .FlatAppearance.BorderSize = 0 .FlatStyle = FlatStyle.Flat End With Select Case a Case 0, 2, 4, 6 Select Case b Case 0, 2, 4, 6 Bouton(Index).BackColor = Color.White Case 1, 3, 5, 7 Bouton(Index).BackColor = Color.Black End Select Case 1, 3, 5, 7 Select Case b Case 0, 2, 4, 6 Bouton(Index).BackColor = Color.Black Case 1, 3, 5, 7 Bouton(Index).BackColor = Color.White End Select End Select Me.Panel1.Controls.Add(Bouton(Index)) Index += 1 Next Next End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim bmp As New Bitmap(Panel1.Width, Panel1.Height) Panel1.DrawToBitmap(bmp, New Rectangle(New Point(0, 0), Panel1.Size)) bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop & "/Echec.png", System.Drawing.Imaging.ImageFormat.Png) MsgBox("Fichier save!") End Sub End Class
J’espère que j'ai bien répondu a votre question,
Cordialement,
- Marqué comme réponse NathanTheProgammer jeudi 12 avril 2018 16:08
-
-
Merci beaucoup pour ta réponse ! Mon but était de pouvoir placer des pièces avant de le convertir en image, mais tu m'as mis sur la voie car tu m'as appris comment convertir un Panel en image. Je ferai pareil avec un TableLayoutPanel mais ce sera la même chose. Encore merci !
Encore merci,
Nathan
-