用GDI+慢的话就用GDI//声明API(要引用System.Runtime.InteropService
[DllImport("gdi32.dll")]
//获得屏幕
static public extern IntPtr GetDC (int z);
[DllImport("user32.dll")]
//获得分辨率
static public extern int GetSystemMetrics(int a);
//块
[DllImport("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, //目标设备的句柄
int nXDest, // 目标对象的左上角的X坐标
int nYDest, // 目标对象的左上角的X坐标
int nWidth, // 目标对象的矩形的宽度
int nHeight, // 目标对象的矩形的长度
IntPtr hdcSrc, // 源设备的句柄
int nXSrc, // 源对象的左上角的X坐标
int nYSrc, // 源对象的左上角的X坐标
int dwRop // 光栅的操作值
);
public const int ROP_SrcCopy = 0xCC0020;
//然后用
IntPtr ScreenDC= GetDC(0);
Bitmap i=(Bitmap)new Bitmap(GetSystemMetrics(0),GetSystemMetrics(1);
Graphics g=Graphics.FromImage(i);
IntPtr hdc=g.GetHdc();
SrcCopy(g,0,0,i.Width,i.Height,ScreenDC,0,0,ROP_SrcCopy;
g.ReleaseHdc();
如果还嫌慢就直接截显示驱动,好多远程监控软件就是这么做的
[DllImport("gdi32.dll")]
//获得屏幕
static public extern IntPtr GetDC (int z);
[DllImport("user32.dll")]
//获得分辨率
static public extern int GetSystemMetrics(int a);
//块
[DllImport("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, //目标设备的句柄
int nXDest, // 目标对象的左上角的X坐标
int nYDest, // 目标对象的左上角的X坐标
int nWidth, // 目标对象的矩形的宽度
int nHeight, // 目标对象的矩形的长度
IntPtr hdcSrc, // 源设备的句柄
int nXSrc, // 源对象的左上角的X坐标
int nYSrc, // 源对象的左上角的X坐标
int dwRop // 光栅的操作值
);
public const int ROP_SrcCopy = 0xCC0020;
//然后用
IntPtr ScreenDC= GetDC(0);
Bitmap i=(Bitmap)new Bitmap(GetSystemMetrics(0),GetSystemMetrics(1);
Graphics g=Graphics.FromImage(i);
IntPtr hdc=g.GetHdc();
SrcCopy(g,0,0,i.Width,i.Height,ScreenDC,0,0,ROP_SrcCopy;
g.ReleaseHdc();
如果还嫌慢就直接截显示驱动,好多远程监控软件就是这么做的
把图像加载到帧里http://blog.csdn.net/cping1982/archive/2008/01/14/2043455.aspx