Bonjour, je suis en train de faire une transparence sur une image via un code que j'ai trouvé :
Que j'insert dans un bouton, le code fonctionne bien.
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()
Le problème et que à chaque fois que l'on clique sur le bouton le
Insert un bitmap dans la ram et donc à 500 clique on a plus de mémoire ram.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim newBmp = New Bitmap(PictureBox1.Image.Width, PictureBox1.Image.Height)
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
Partager