参看以下帖子:http://expert.csdn.net/Expert/topic/2854/2854751.xml

解决方案 »

  1.   

    获取桌面窗口的HDC句柄, 计算出鼠标拖动的矩形的位置,大小,调用BitBlt函数截屏.private Bitmap GetDesktopBitmap()
    {
    int Start = Environment.TickCount; Size DesktopBitmapSize = GetDesktopBitmapSize(); Graphics Graphic = Graphics.FromHwnd(GetDesktopWindow()); int GraphicsFromHwndTime = Environment.TickCount - Start;
    Start = Environment.TickCount; Bitmap MemImage = new Bitmap(DesktopBitmapSize.Width, DesktopBitmapSize.Height, Graphic); int MemImageTime = Environment.TickCount - Start;
    Start = Environment.TickCount; Graphics MemGraphic = Graphics.FromImage(MemImage); int FromImageTime = Environment.TickCount - Start; IntPtr dc1 = Graphic.GetHdc();
    IntPtr dc2 = MemGraphic.GetHdc();
    BitBlt(dc2, 0, 0, DesktopBitmapSize.Width, DesktopBitmapSize.Height, dc1, 0, 0, SRCCOPY); int BitBltTime = Environment.TickCount - Start; Graphic.ReleaseHdc(dc1);
    MemGraphic.ReleaseHdc(dc2);

    Console.WriteLine("GraphicsFromHwndTime: " + GraphicsFromHwndTime.ToString());
    Console.WriteLine("MemImageTime:         " + MemImageTime.ToString());
    Console.WriteLine("FromImageTime:        " + FromImageTime.ToString());
    Console.WriteLine("BitBltTime:           " + BitBltTime.ToString()); Graphic.Dispose();
    MemGraphic.Dispose(); return MemImage;
    }