截取桌面图像,比较简单,只需要简单的调用Graphics的CopyFromScreen方法即可以实现;
关于将图像绘制到窗口上很容易实现,但是却很少看到有文章介绍从窗口上截取图像的。下面主要介绍一下关于窗口图像截取的方法。
要截取窗口的图像,需要用到系统提供的BitBlt函数,这个函数的作用就是从源设备的上下文中拷贝一张Bitmap图像至目标设备。具体参数介绍请参见MSDN文档
下面是C#对该函数的引入操作:
[DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern int BitBlt(HandleRef hDC, int x, int y, int nWidth, int nHeight, HandleRef hSrcDC, int xSrc, int ySrc, int dwRop);
具体操作代码参见如下:
Graphics gSrc = this.CreateGraphics(); //创建窗体的Graphics对象
HandleRef hDcSrc = new HandleRef(null, gSrc.GetHdc());
int width = this.Width-SystemInformation.FrameBorderSize.Width; //获取宽度
int height = this.Height-SystemInformation.FrameBorderSize.Height; //获取高度