RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » .NET » C#
Language: .NET
Expertise: Intermediate
Oct 25, 2016

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

        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

Hannes du Preez
Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date