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 :

L'exception System.NullReferenceException n'a pas été gérée


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut L'exception System.NullReferenceException n'a pas été gérée
    Bonjour a tous.
    Je ne sais pas si mon idée marche mais pour regrouper 4 images en une seulle je dessine a l'interieur d'une pucture box(picturebox1) 4 picture boxe(picturebox2,picturebox3,picturebox4,picturebox5) et je veux ensuite sauvegarder ma pictureboxe contenant les 4 picture box
    malheureusement sur les derniéres lignes

    Kill(az) j'ai une erreur a l'exécution :
    L'exception System.IO.IOException n'a pas été gérée
    PictureBox1.Image.Save(az, ImageFormat.Jpeg) une erreur a l'exécution :
    L'exception System.NullReferenceException n'a pas été gérée

    je ne vois pas d'où cela peut provenir ,pourriez vous me venir en aide?
    Je vous en remercie par avance

    voici mon code

    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
    Imports System.IO
    Imports System.IO.Path
    Imports VB = Microsoft.VisualBasic
    Imports System.Windows.Forms.ListBox
    Imports System.Drawing
    Imports System.Drawing.Imaging
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
    ' charger image dans picturebox2
     Dim zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\A.jpg"
            Dim fs As System.IO.FileStream
            ' Specify a valid picture file path on your computer.
            fs = New System.IO.FileStream(zz, IO.FileMode.Open, IO.FileAccess.Read)
            PictureBox2.Image = System.Drawing.Image.FromStream(fs)
            fs.Dispose()
            fs = Nothing
            '***********************************
          ' charger image dans picturebox3
      zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\B.jpg"
     
            ' Specify a valid picture file path on your computer.
            fs = New System.IO.FileStream(zz, IO.FileMode.Open, IO.FileAccess.Read)
            PictureBox3.Image = System.Drawing.Image.FromStream(fs)
            fs.Dispose()
            fs = Nothing
            '***********************************
           ' charger image dans picturebox4
     zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\B.jpg"
     
            ' Specify a valid picture file path on your computer.
            fs = New System.IO.FileStream(zz, IO.FileMode.Open, IO.FileAccess.Read)
            PictureBox4.Image = System.Drawing.Image.FromStream(fs)
            fs.Dispose()
            fs = Nothing
            '***********************************
           ' charger image dans picturebox5
     zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\C.jpg"
     
            ' Specify a valid picture file path on your computer.
            fs = New System.IO.FileStream(zz, IO.FileMode.Open, IO.FileAccess.Read)
            PictureBox5.Image = System.Drawing.Image.FromStream(fs)
            fs.Dispose()
            fs = Nothing
            '***********************************
     
            '***********************************
            PictureBox1.Invalidate()
            Me.Refresh()
            Dim az = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\A.jpg"
            ' az = "E:\aa.jpg"
            Kill(az)
            PictureBox1.Image.Save(az, ImageFormat.Jpeg)
     
        End Sub  
     
    End Class

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut L'exception System.NullReferenceException n'a pas été gérée
    Re bonsoir a tous.

    pour la ligne
    Kill(az)
    j'ai resolu par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if file.existe(az)
    kill(az) 
    end if
    j'ai mofifi" ma seconde ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PictureBox1.Image.Save(az, ImageFormat.Jpeg)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PictureBox1.Image.Save(az)
    l'erreur a l'exécution est :
    L'exception System.NullReferenceException n'a pas été gérée
    merci a tous ceux qui pourront m'aider

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Tu peux tourner le truc dans tous les sens, ça ne fonctionnera jamais car ton idée est incorrecte : ce n'est pas comme ça qu'on peut enregistrer la superposition de plusieurs images (bon, certains vont pinailler qu'il est possible en passant par les API Windows de faire un "screenshot" du PictureBox puis de sauvegarder le contenu mais c'est une solution à mon sens catastrophique). La propriété Image de ton PictureBox1 est à Nothing d'où l'exception ArgumentNullException.

    Pour superposer des images, pas besoin de passer par des PictureBox. Il faut utiliser les fonctionnalités de System.Drawing et System.Drawing.Imaging. Il suffit d'ouvrir les images dans des Bitmap puis de créer un objet Graphics sur l'image sur laquelle on veut superposer les autres puis d'appeler la méthode DrawImage.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut erreur execution
    Merci pour ta réponce qui réponds a mes 2 questions.
    Pour mon message d'erreur et pour la faisabilité de la chose.

    ,Je vais essayer ce que tu me dis et ne manquerai pas de revenir ensuite sur le forum

    Dan

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut
    Bonjour a tous et à jeidan .
    voici mon code,ca fonctionne bien pour 2 images l'une a coté de l'autre.
    maintenant je voudrai pouvoir ajouter 2 autre images en dessous et comme j'ai largement plagié un code qui m'avait été donné je ne sais plus quoi faire,
    faut il que je refasse la même opération avec les images suivantes et qu'ensuite je fusionne ensuite les images obtenues?
    comment placer les nouvelles images l'une en dessous de l'autre et non plus l'une a coté de l'autre?

    je sais que j'en demande peut être un peu beaucoup mais je vous remercie de votre compréhension et votre indulgence.

    voici mon code pour 2 image cote a cote

    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
    zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\A.jpg"
            Dim img1 As Bitmap = Image.FromFile(zz)
            zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\B.jpg"
     
            Dim img2 As Bitmap = Image.FromFile(zz)
     
            Dim newImage As New Bitmap(img1.Width + img2.Width, img1.Height)
     
            For i As Integer = 0 To img1.Width - 1
                For j As Integer = 0 To img1.Height - 1
                    newImage.SetPixel(i, j, img1.GetPixel(i, j))
                Next
            Next
     
            For i As Integer = 0 To img2.Width - 1
                For j As Integer = 0 To img2.Height - 1
                    newImage.SetPixel(i + img1.Width, j, img2.GetPixel(i, j))
                Next
            Next
            zz = "E:\VBESSAIPICTUREBOX\VBESSAIPICTURE\VBESSAIPICTURE\bin\Debug\DATA\AA.jpg"
            If File.Exists(zz) Then
                Kill(zz)
            End If
     
            newImage.Save(zz)

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    La méthode utilisée n'est pas optimale. Il n'y a pas plus lent que d'utiliser GetPixel et SetPixel en GDI+ pour copier une image. Comme je l'ai déjà dit dans mon précédent post, regarde du côté de la méthode DrawImage de l'objet Graphics, c'est simple à utiliser. Le code final devrait faire 6 ou 7 lignes grand max.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut fusionner images
    Merci KAIDAN .

    Mais ou pourrais je trouver un bout de code avec la méthode DrawImage ?
    ou un petit tuto su le sujet ou peut etre pourrais tu me faire un exemple
    je suis assez novice sur le sujet

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Pour progresser, il faut apprendre à chercher un minimum soit-même :

    http://msdn.microsoft.com/fr-fr/libr....graphics.aspx

Discussions similaires

  1. L'exception NullReferenceException n'a pas été gérée
    Par sycoulibaly dans le forum VB.NET
    Réponses: 13
    Dernier message: 20/02/2020, 11h49
  2. Réponses: 4
    Dernier message: 13/07/2010, 13h29
  3. Réponses: 9
    Dernier message: 03/05/2010, 17h40
  4. Réponses: 2
    Dernier message: 29/01/2008, 12h04
  5. Réponses: 6
    Dernier message: 14/06/2007, 08h05

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