IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Capture écran d'un panel contenant des picture box [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut Capture écran d'un panel contenant des picture box
    Bonjour à tous

    Voilà c'est la dernière étape avant la finalisation de mon projet, et comme c'est de tradition, c'est celle qui foire...

    J'ai dans mon form1 un panel ("panel1") qui contient plusieurs picturebox.
    Certaines sont "en dures", et d'autres variables.

    Je voudrais faire une capture de ce panel et l'enregistrer, voici donc mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     Dim saveimage As Bitmap
            Panel1.Refresh()
            saveimage = PrintControl(Panel1)
            saveimage.Save("C:\1.bmp")
     
            GroupBox1.Hide()
            GroupBox5.Show()
            Button8.BackColor = Color.CornflowerBlue
            Button7.BackColor = Color.LightSteelBlue
    Mon fichier 1.bmp est bien créé, il a bien le format de ma panel1, mais il ne contient que les images "en dures" ! Toutes les autre picture box qui sont variables ne sont pas capturées...

    Exemple :



    Quelqu'un saurait-il m'aider ?

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par botbot Voir le message
    J'ai dans mon form1 un panel ("panel1") qui contient plusieurs picturebox.
    Certaines sont "en dures", et d'autres variables.
    Qu'entends-tu par là exactement ? Tu affectes dynamiquement une Image à la PictureBox, ou tu dessines dans l'évènement Paint ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Pour être plus clair :

    Dans mon panel donc, j'ai des 2 picturebox ou j'affecte l'image directement depuis Visual Studio
    -> ce sont celles qu'on peut donc distinguer sur ma coipe d'écran ci dessus.

    Également, j'ai 6/7 autres picturebox ou j'affecte dynamiquerment une image qui fait partie des ressources. (Mon soft est un configurateur donc énormément de variantes possibles)
    -> Ce sont ces picturebox qui ne sont pas capturées.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Peux-tu montrer le code avec lequel tu affectes les images aux PictureBox? Et le code de la méthode PrintControl ?

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Je proposerai bien de tester une autre approche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Dim bmp As Bitmap = New Bitmap(Panel1.Width, Panel1.Height)
            Panel1.DrawToBitmap(bmp, New Rectangle(0, 0, Panel1.Width, Panel1.Height))
            bmp.Save("D:\data\bmp.bmp")
            bmp.Dispose()
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Merci rv26t, malheureusement cela donne le même résultat

    tomlev, voici le code qui affecte les images à l'un des picturebox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
      Select Case ComboBox4.Text
                Case "X1"
                    PictureECL1.Image = My.Resources.X1
                Case "X1 FRONTAL"
                    PictureECL1.Image = My.Resources.X1F
                Case "X2"
                    PictureECL1.Image = My.Resources.X2
                Case "X2 FRONTAL"
                    PictureECL1.Image = My.Resources.X2F
                Case "X3"
                    PictureECL1.Image = My.Resources.X3
                Case "X3 FRONTAL"
                    PictureECL1.Image = My.Resources.X3F
                Case "KALEA20"
                    PictureECL1.Image = My.Resources.K20
                Case "KALEA20 FRONTAL"
                    PictureECL1.Image = My.Resources.K20F
                Case "KALEA30"
                    PictureECL1.Image = My.Resources.K30
                Case "KALEA30 FRONTAL"
                    PictureECL1.Image = My.Resources.K30F
            End Select
    Et le code du printcontrol :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     Public Function PrintControl(ByVal Ctrl As System.Windows.Forms.Control) As System.Drawing.Bitmap
            Dim bmp As System.Drawing.Bitmap = Nothing
            Dim gr As System.Drawing.Graphics = Nothing
            Dim hdc As IntPtr = IntPtr.Zero
            Try
                bmp = New System.Drawing.Bitmap(Ctrl.ClientRectangle.Width, Ctrl.ClientRectangle.Height, Ctrl.CreateGraphics())
                gr = Graphics.FromImage(bmp)
                hdc = gr.GetHdc()
                Dim wParam As IntPtr = hdc
                Dim lParam As IntPtr = New IntPtr(PRF_CLIENT Or PRF_CHILDREN)
                Dim msg As System.Windows.Forms.Message = System.Windows.Forms.Message.Create(Ctrl.Handle, WM_PRINT, wParam, lParam)
                MyBase.WndProc(msg)
            Catch
            Finally
                If Not gr Is Nothing Then
                    If hdc <> IntPtr.Zero Then gr.ReleaseHdc(hdc)
                    gr.Dispose()
                End If
            End Try
            Return bmp
        End Function
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Data bindings avec des pictures box
    Par patoche.05 dans le forum C#
    Réponses: 0
    Dernier message: 20/04/2009, 12h54
  2. Réponses: 1
    Dernier message: 13/01/2009, 17h24
  3. Comment faire 1 page web contenant des petits box comme ca ?
    Par mohamed dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 11/11/2006, 16h04
  4. [C#] Capture écran dans pictureBox
    Par Gauden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2004, 10h18
  5. Cherche un site contenant des sources valables
    Par Kartofel dans le forum Debian
    Réponses: 7
    Dernier message: 14/01/2004, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo