Using BitBlt to Copy Images in C#

The BitBlt function simply performs a bit-block transfer of the color data corresponding to a rectangle of pixels from a source device context into a destination device context. You can use it in the following way to copy images:

Declare the API:

const int SRCCOPY = 0xcc0020; // we want to copy an in memory image        [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]        private static extern int BitBlt(          IntPtr hdcDest,     // handle to destination DC (device context)          int nXDest,         // x-coord of destination upper-left corner          int nYDest,         // y-coord of destination upper-left corner          int nWidth,         // width of destination rectangle          int nHeight,        // height of destination rectangle          IntPtr hdcSrc,      // handle to source DC          int nXSrc,          // x-coordinate of source upper-left corner          int nYSrc,          // y-coordinate of source upper-left corner          System.Int32 dwRop  // raster operation code          ); 

Perform the Copy operation:

private void Form1_Paint(object sender, PaintEventArgs e)        {            Graphics g = e.Graphics; // graphics object            g.FillRectangle(Brushes.Black, ClientRectangle); // make client black             g.DrawRectangle(Pens.White, 20, 20, 60, 60); // draw white rectangles            IntPtr dc = g.GetHdc(); // get device context handle            BitBlt(dc, 70, 0, 60, 60, dc, 0, 0, SRCCOPY); // copy this in memory graphic ( g )            g.ReleaseHdc(dc); // release resources        }
Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Related Posts