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 :

ajouter un dessin sur un picturebox [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut ajouter un dessin sur un picturebox
    Bonjour

    Le petit bout de code ci-dessous me permet j'ajouter du texte sur mon image dans le Picturebox, mais lorsque je le sauve, le texte lui ne l'est pas.
    PbDrs= Mon PictureBox

    je rate quelque chose ?


    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
      Private Sub PbDrs_MouseDown(sender As Object, e As MouseEventArgs) Handles PbDrs.MouseDown
     
                      PointX = e.X
                      PointY = e.Y
     
          End Sub
     
          Private Sub PbDrs_MouseUp(sender As Object, e As MouseEventArgs) Handles PbDrs.MouseUp
                Dim gr As Graphics = Me.PbDrs.CreateGraphics
                Dim PF9Normal As Font = New Font("Arial", 9, FontStyle.Regular, GraphicsUnit.Point)
     
               gr.DrawString("TextAjouté", PF9Normal, Brushes.Yellow, PointX, PointY)
     
     
          End Sub

  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 : 43
    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
    Il faut dessiner sur l'image, pas sur le PictureBox. Au lieu d'utiliser le Graphics créé pour le contrôle PictureBox, crée-le à partir de l'image.
    Et pense à libérer le Graphics après usage, sinon tu vas leaker des handles (le plus simple est d'utiliser un bloc Using)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          Private Sub PbDrs_MouseUp(sender As Object, e As MouseEventArgs) Handles PbDrs.MouseUp
                Using gr As Graphics = Graphics.FromImage(PbDrs.Image)
                    Dim PF9Normal As Font = New Font("Arial", 9, FontStyle.Regular, GraphicsUnit.Point)
     
                    gr.DrawString("TextAjouté", PF9Normal, Brushes.Yellow, PointX, PointY)
     
                End Using
          End Sub

  3. #3
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Bonjour et merci de ta collaboration

    Lorsque je prend simplement ton code et le coller dans l'éditeur, au lancement de l'appli , il ne se passe rien sur l'image
    le but étant comme je crois tu l'as bien compris , c'est de pouvoir ajouter une annotation sur une image , puis de sauvé le tout dans la DB

  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 : 43
    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
    Il y a une image dans la PictureBox ?

  5. #5
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Oui, il y a une image

  6. #6
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    En ajoutant ceci -> ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     PbDrs.Image = Newbitmap

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Dim PF9Normal As Font = New Font("Arial", 9, FontStyle.Regular, GraphicsUnit.Point)
                Dim ImgTemp As Bitmap = New Bitmap(PbDrs.Image)
                Dim gr As Graphics = Graphics.FromImage(ImgTemp)
     
                      PointX = e.X
                      PointY = e.Y
     
                 gr.DrawString("TextAjouter", PF9Normal, Brushes.Yellow, PointX, PointY)
     
               PbDrs.Image = ImgTemp
    Par contre l'étape suivante est de l'enregistre et sa bloque un peut ici ( sur la ligne RawFormat)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim ms = New MemoryStream()
                Dim arrImage() As Byte
     
                MsgBox(PbDrs.Image.RawFormat.ToString)
     
                PbDrs.Image.Save(ms, PbDrs.Image.RawFormat)
                arrImage = ms.GetBuffer
                ms.Close()
    je reçois le message suivant:

    Une exception non gérée du type 'System.ArgumentNullException' s'est produite dans System.Drawing.dll

    Informations supplémentaires : La valeur ne peut pas être null.

    Pourtant PbDrs n'est pas vide...

  7. #7
    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 : 43
    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
    C'est juste parce que l'affichage ne s'était pas rafraichi que ça ne marchait pas ; il faut appeler PbDrs.Invalidate() après avoir dessiné sur l'image (en partant du code que j'avais donné)

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

Discussions similaires

  1. Dessiner sur une pictureBox transparente
    Par rdtech dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 21/03/2012, 21h09
  2. dessiner sur un panel ou sur un picturebox
    Par olibara dans le forum C#
    Réponses: 12
    Dernier message: 13/06/2008, 23h24
  3. rafraichir un dessin sur picturebox
    Par dod_o dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/05/2008, 16h13
  4. Dessiner sur un picturebox par graphics ?
    Par olibara dans le forum C#
    Réponses: 6
    Dernier message: 19/03/2008, 14h03
  5. dessiner sur un composant picturebox
    Par xantares dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/01/2007, 12h05

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