Je n'arrive pas à copier le bitmap source dans le bitmap target avec cette procédure. Je voudrais absolument utiliser BitBlt car à priori ce sera plus rapide que drawimage...

L'appel à picturebox1.Image=target m'affiche désespérement du vide alors que si je remplace par picturebox1.Image = source l'image est bien affichée...

Merci de votre aide je débute en C#

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
17
18
    private void CopyBitmap()
        {
            Bitmap source = new Bitmap("c://ESSAI.bmp");
            Graphics gSource = Graphics.FromImage(source);
            Bitmap target = new Bitmap(source.Width, source.Height);
            Graphics gDest = Graphics.FromImage(target);
            IntPtr sourceDC = gSource.GetHdc();
            IntPtr destDC = gDest.GetHdc();
 
            BitBlt(destDC, 0, 0, source.Width, source.Height, sourceDC, 0, 0, 13369376);
            pictureBox1.Image = target;
 
            gDest.ReleaseHdc(destDC);
            gSource.ReleaseHdc(sourceDC);
            gDest.Dispose();
            gSource.Dispose();
 
        }
Voici la déclaration pour BitBlt:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
[System.Runtime.InteropServices.DllImportAttribute(
                 "gdi32.dll")]
        private static extern bool BitBlt(
                    IntPtr hdcDest, // handle to destination DC
                    int xDest, // x coord of the dest upper left corner
                    int yDest, // y coord of the dest upper left corner
                    int width, // width of the destination rectangle
                    int height, // height of the destination rectangle
                    IntPtr hdcSrc, // handle to source DC
                    int xSrc, // x coord of the source upper left corner
                    int ySrc, // y coord of the source upper left corner
                    Int32 dwRop // raster operation code
                    );