VB/VB.Net Gros ennuis a cause d'un malheureux Bitmap ...

A

Anonymous

Invité
#1
Bonjour tout le monde

Je suis bien empeté, je crée un programme qui doit dans l'ordre :

1°) Faire un Screenshot OK
2°) L'enregistrer OK
3°) Le Supprimer Et c'est la qu'ca coince ....


J'ai beau essayer de décharger ma Picturebox par tout les moyens possibles et imaginables, impossible de le supprimer parce qu'il serait soit-disant utilisé ailleurs ... je ne sais plus compent faire pour "décharger" le Bitmap ... j'ai essayé un Kill(chemin) rien a faire ...


Voici les Ebauches de code que j'ai essayé (excusez moi du desordre)

Code:
        'Déclaration de variables
        Dim Bounds As Rectangle
        Dim Capture As System.Drawing.Bitmap
        Dim Graph As Graphics

        If File.Exists("C:\screen.bmp") Then
            File.Delete("C:\screen.bmp")
        Else
            On Error Resume Next
        End If
        Bounds = Screen.PrimaryScreen.Bounds 'définition de la taille de l'écran
        'Création de l'image
        Capture = New System.Drawing.Bitmap(Bounds.Width, Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
        Graph = Graphics.FromImage(Capture)
        Graph.CopyFromScreen(Bounds.X, Bounds.Y, 0, 0, Bounds.Size, CopyPixelOperation.SourceCopy)
        'Insertion de l'image
        PictureBox1.Image = Capture
        PictureBox1.Image.Save("C:\screen.bmp")
    End Sub
[................]
        PictureBox1.Dispose()      'libere la picturebox
        Capture = Nothing    'libère le curseur
Pourriez-vous m'aider ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#2
Salut , as tu essayé de .dispose "Capture" , voire meme au pire "graph" ?
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#3
salut, que veu tu faire avec le screen ? si tu veu récuperer la couleur d'un pixel

je te conseil de pas faire ça, fait ta capture comme ça:(pas vraiment un capture mais bon)
Code:
Imports System.Drawing
Imports System.Runtime.InteropServices

NotInheritable Class Win32
    <DllImport("user32.dll")> _
    Private Shared Function GetDC(ByVal hwnd As IntPtr) As IntPtr
    End Function

    <DllImport("user32.dll")> _
    Private Shared Function ReleaseDC(ByVal hwnd As IntPtr, ByVal hdc As IntPtr) As Int32
    End Function

    <DllImport("gdi32.dll")> _
    Private Shared Function GetPixel(ByVal hdc As IntPtr, ByVal nXPos As Integer, ByVal nYPos As Integer) As UInteger
    End Function

    Public Shared Function GetPixelColor(ByVal x As Integer, ByVal y As Integer) As System.Drawing.Color
        Dim hdc As IntPtr = GetDC(IntPtr.Zero)
        Dim pixel As UInteger = GetPixel(hdc, x, y)
        ReleaseDC(IntPtr.Zero, hdc)
        Dim color__1 As Color = Color.FromArgb(CInt(pixel And &HFF), CInt(pixel And &HFF00) >> 8, CInt(pixel And &HFF0000) >> 16)
        Return color__1
    End Function
End Class
que tu utilise:
Code:
    Public Function GetColorOfPixel(ByVal x As Integer, ByVal y As Integer)
        Return Win32.GetPixelColor(x, y)
    End Function

ou sinon pour le virer fait comme toons la dit !
 
A

Anonymous

Invité
#4
Nico pourquoi répondre à un post de plus de 3mois ?
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#5
P**** j'avais pas vu la date ...

edit: ceux qui veule savoir comment récupérer la couleur d'un pixel en vb.net trouverons la réponse ici en passant
 
Haut Bas