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 : Sélectionner tout - Visualiser dans une fenêtre à part
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