utiliser lockbits pour copier une image
bonjour
je dois copier un morceau d'image géante (4000 * 1000) sur des petites images
avec drawimage les perfs sont pas top et j'ai lu qu'avec lockbits ca peut etre beaucoup plus rapide
mais je n'arrive pas à le faire fonctionner
quand j'accède à ma nouvelle image j'ai une erreur disant qu'il y a un problème sur la mémoire
voilà le code que j'ai pondu :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Dim b2 As New System.Drawing.Bitmap(ctrl.Width, ctrl.Height, BackImg.PixelFormat)
Dim bmpSource As System.Drawing.Imaging.BitmapData
Dim bmpDest As System.Drawing.Imaging.BitmapData
bmpSource = BackImg.LockBits(New Rectangle(ctrl.Location, ctrl.Size), Imaging.ImageLockMode.ReadWrite, BackImg.PixelFormat)
bmpDest = b2.LockBits(New Rectangle(0, 0, ctrl.Width, ctrl.Height), Imaging.ImageLockMode.ReadWrite, BackImg.PixelFormat)
Dim b(bmpSource.Width * bmpSource.Height - 1) As Integer
System.Runtime.InteropServices.Marshal.Copy(bmpSource.Scan0, b, 0, bmpSource.Width * bmpSource.Height)
System.Runtime.InteropServices.Marshal.Copy(b, 0, bmpDest.Scan0, bmpDest.Width * bmpDest.Height)
BackImg.UnlockBits(bmpSource)
b2.UnlockBits(bmpDest) |
les images sont en 24bits
j'ai pas réussi à utiliser copy pour faire d'une à l'autre, donc je suis passé par un tableau de byte à défaut de mieux, m'enfin y doit me manquer un truc vu que ca marche pas trop
si quelqu'un sait comment utiliser ce truc .... merci