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 :

Picturebox.image toujours vide meme quand je dessine dans picturebox [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut Picturebox.image toujours vide meme quand je dessine dans picturebox
    Je me demandes si c'est normal que maPicturebox.image soit toujours égale a "nothing".
    Je dessine dedans avec une fonction (quand j'exécute le programme il y a bien un dessin d'affiché à l'écran dans ma picturebox)

    Mon but et de copier dans le clipboard ce que j'ai affiché dans la picturebox.
    Quand je regarde sur internet apparement c'est très simple, il suffit de récuperer ce qu'il y a dans picturebox.image et c'est bon
    Le problème peut il venir de ma fonction qui dessine ?
    Dans la fonction qui dessine j'ai fait :
    je crée une picturebox dans form1
    dans module1.vb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim graphe As Graphics
    graphe = Form1.Picturebox.creatGraphics
    graphe.clear(color.aliceblue)
    graphe.drawline(pens.blue,x1:=5,y1:=5, x2:=105,y2:=105)
    (le code c'est pas exactement ca parceque je dessine un truc calculé avant, mais les déclarations sont comme cela)

    J'aimerai juste savoir si quand on dessine dans un "graphe as graphics" a l'interieur d'une picturebox, ca met quelque chose dans picturebox.image ?
    Quand j'essaye avec un code simple j'ai l'impression que non. Comment stocker ce que je dessine dans la pictureboxe dans picturebox.image?
    j'ai essayé de faire un copyfromscreen avec un rectangle de la taille de ma picturebox et centré sur cette dernière, mais même comme cela je n'y arrive pas.

  2. #2
    Membre actif
    Homme Profil pro
    Aucune
    Inscrit en
    Mars 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune

    Informations forums :
    Inscription : Mars 2014
    Messages : 34
    Par défaut
    Salut,

    Je pense que tu ty prends pas très bien...
    Créer une image, dessine dessus puis ensuite tu injecte cette image à ta PictureBox grâce à PictureBox1.Image = Ton image
    Voilà sinon donne un peut plus d’exemple !

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    dessiner sur un controle ne remplie aucune image, ca dessine juste à l'écran

    pour dessiner durablement il faut dessiner sur e.Graphics de l'event paint du controle en question
    tout ce qui est dessiné ailleurs sera effacé à plus ou moins long terme
    en cas de de modification sur un controle, celui ci appelle .invalidate (équivalent de .refresh) sur lui même, ca appelle l'event paint dans la foulée pour redessiner totalement le controle et donc effacer tout ce qui a été fait précédemment
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour
    Comment stocker ce que je dessine dans la pictureboxe dans picturebox.image?
    Tu peux simplement
    1/stocker tout ce qui est dessine sur un controle dans l'event Paint (que tu peux declencher à tout moment avec un appel à Picturebox.Invalidate) dans un bitmap...

    2/Ensuite recuperer le dessin avec un appel à PictureBox.DrawToBitmap(img ton bitmap)...

    3/Appler Clipboard.SetImage(img) si image est disponible
    4/En faire ce que tu veux.....
    exemple vb:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    'SIMPLE MODULE QUI STOCKE TON IMAGE
    Module Module1
        Public img As Bitmap
    'TON FORM UTILSATEUR 
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'APPEL À INVALIDATE
            PictureBox1.Invalidate()
     
            'RENDU DU PICTUREBOX EST DESSINE SUR UN BITMAP 
            PictureBox1.DrawToBitmap(Module1.img, New Rectangle(0, 0, PictureBox1.Size.Width, PictureBox1.Size.Height))
     
            'ASSIGNE LE BMP à PICTUREBOX1.IMAGE 
            PictureBox1.Image = Module1.img
     
        End Sub
     
     
     
        Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
     
            Dim graphe As Graphics = e.Graphics
            graphe.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            graphe.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
            graphe.Clear(Color.White)
            graphe.DrawLine(Pens.DarkBlue, x1:=5, y1:=5, x2:=105, y2:=105)
            graphe.DrawEllipse(Pens.Red, rect:=New Rectangle(5, 5, 100, 100))
            graphe.DrawString("Hello", New Font("Arial", 16.0F, FontStyle.Bold), Brushes.Magenta, New PointF(25, 25))
     
        End Sub
        'CODE NECESSAIRE SI PICTUREBOX1 EST RESIZE
        Private Sub PictureBox1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.SizeChanged
            Module1.img = New Bitmap(PictureBox1.Size.Width, PictureBox1.Size.Height)
     
            'DESSIN =>APPEL À INVALIDATE
            PictureBox1.Invalidate()
     
            'RENDU DU PICTUREBOX EST DESSINE SUR UN BITMAP 
            PictureBox1.DrawToBitmap(Module1.img, New Rectangle(0, 0, PictureBox1.Size.Width, PictureBox1.Size.Height))
     
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If Module1.img IsNot Nothing Then
                Clipboard.SetImage(PictureBox1.Image)
            End If
     
     
     
            'J'EN FAIS CE QUE VEUX !!!
            'BITMAP EST AFFICHE DANS PICTUREBOX2 
            If Clipboard.ContainsImage() Then
                PictureBox2.Image = Clipboard.GetImage()
            End If
     
     
     
     
        End Sub
     
     
    End Class
     
    End Module
     
    'TON FORM UTILISATEUR 
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'APPEL À INVALIDATE
            PictureBox1.Invalidate()
     
            'RENDU DU PICTUREBOX EST DESSINE SUR UN BITMAP 
            PictureBox1.DrawToBitmap(Module1.img, New Rectangle(0, 0, PictureBox1.Size.Width, PictureBox1.Size.Height))
     
        End Sub
     
     
     
        Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
     
            Dim graphe As Graphics = e.Graphics
            graphe.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            graphe.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
            graphe.Clear(Color.White)
            graphe.DrawLine(Pens.DarkBlue, x1:=5, y1:=5, x2:=105, y2:=105)
            graphe.DrawEllipse(Pens.Red, rect:=New Rectangle(5, 5, 100, 100))
            graphe.DrawString("Hello", New Font("Arial", 16.0F, FontStyle.Bold), Brushes.Magenta, New PointF(25, 25))
     
        End Sub
        'CODE NECESSAIRE SI PICTUREBOX1 EST RSIZE
        Private Sub PictureBox1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.SizeChanged
            Module1.img = New Bitmap(PictureBox1.Size.Width, PictureBox1.Size.Height)
            'DESSIN =>APPEL À INVALIDATE
            PictureBox1.Invalidate()
            'RENDU DU PICTUREBOX EST DESSINE SUR UN BITMAP 
            PictureBox1.DrawToBitmap(Module1.img, New Rectangle(0, 0, PictureBox1.Size.Width, PictureBox1.Size.Height))
     
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If Module1.img IsNot Nothing Then
                Clipboard.SetImage(Module1.img)
            End If
     
     
     
            'BITMAP EST AFFICHE DANS PICTUREBOX2 
            If Clipboard.ContainsImage() Then
                PictureBox2.Image = Clipboard.GetImage()
            End If
     
     
     
     
        End Sub
     
     
    End Class
    BON CODE...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut
    D'accord merci beaucoup ! je finis ce que j'ai lancé et je me replonge dans cela !

  6. #6
    Membre confirmé
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Par défaut
    Bonjour,

    Voir l'exemple a cette addresse (avec fichier rar): http://visualbasic.w3computing.com/v...map-object.php
    Je pense que cela devrait vous aider.

    A+
    JLuc

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

Discussions similaires

  1. dessiner dans picturebox à partir d'une autre form
    Par doudou47 dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/04/2012, 09h01
  2. Image toujours en haut
    Par mickeliette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/11/2005, 12h27
  3. [D7][Oracle 8i] DBGrid toujours vide
    Par Magnus dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/10/2005, 08h43
  4. [C#] pictureBox : image réduite
    Par Dinytro dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/04/2005, 16h18
  5. GList ayant toujours la même valeur
    Par GLDavid dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 18/03/2005, 11h55

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