Using BitBlt to Copy Images in C#

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        }

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist