none
Convertir un tablelayoutpanel en image RRS feed

  • 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.

    mercredi 11 avril 2018 14:20

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,

    mercredi 11 avril 2018 16:38

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,

    mercredi 11 avril 2018 16:38
  • Bonsoir,

    Moi aussi j'ai fait un petit exemple d'échiquier à cette adresse:

    https://code.msdn.microsoft.com/Dessiner-un-chiquier-avec-f93bc19b?redir=0

    Cordialement

    Gérard

    mercredi 11 avril 2018 18:17
  • 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

    jeudi 12 avril 2018 16:12
  • Merci pour ton programme, ça m'a fait penser que je pourrait faire en sorte de voir le nom des cases, et surtout tu m'as donné la méthode.

    Merci,

    Nathan

    jeudi 12 avril 2018 16:18