Problème avec Dispose() sur picturebox
Bonjour, je suis en train de faire une transparence sur une image via un code que j'ai trouvé :
Code:
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:
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