Bonjour, je suis en train de faire une transparence sur une image via un code que j'ai trouvé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
        Dim newBmp = New Bitmap(PictureBox1.Image.Width, PictureBox1.Image.Height)
        Dim graf = Graphics.FromImage(newBmp)
        Dim ColMatrix As New ColorMatrix
        Dim imgAttribute As ImageAttributes = New ImageAttributes()
        ColMatrix.Matrix33 = 0.3
 
        imgAttribute.SetColorMatrix(ColMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)
        graf.DrawImage(PictureBox1.Image, New Rectangle(0, 0, newBmp.Width, newBmp.Height), 0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height, GraphicsUnit.Pixel, imgAttribute)
 
        PictureBox2.Image = newBmp
        graf.Dispose()
Que j'insert dans un bouton, le code fonctionne bien.
Le problème et que à chaque fois que l'on clique sur le bouton le

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Dim newBmp = New Bitmap(PictureBox1.Image.Width, PictureBox1.Image.Height)
Insert un bitmap dans la ram et donc à 500 clique on a plus de mémoire ram.

Pour vider la ram j'ai pensé à faire un newBmp.Dispose() après PictureBox2.Image = newBmp mais le picturebox2 n'a pas le temps d'inserer l'image à cause du dispose et sa me retourne donc une erreur.

Apparemment Vb.net n'attend pas que l'instruction PictureBox2.Image = newBmp se termine pour passer à newBmp.Dispose()

Une personne à une idée du problème ? Merci