System.Drawing.Image im = System.Drawing.Image.FromFile(@"c:\a.jpg");
Graphics srcg = Graphics.FromImage ( im ) ;
Bitmap dest = new Bitmap(300,300, srcg);
Graphics destg = Graphics.FromImage(dest);
IntPtr srcPtr = srcg.GetHdc();
IntPtr destPtr = destg.GetHdc();
BitBlt(destPtr,0,0,300,300,srcPtr,0,0,0x00CC0020);
dest.Save(SavePaths,System.Drawing.Imaging.ImageFormat.Jpeg );
destg.ReleaseHdc(destPtr);
srcg.ReleaseHdc(srcPtr);
im.Dispose();
srcg.Dispose();
dest.Dispose();
destg.Dispose();

解决方案 »

  1.   

    我把你的代码拿来调试有一阵了,一直没有解决,暂时也不知道哪里出问题了,有点奇怪。
    找到另外一个例子,他的代码和你很类似:
    http://www.c-sharpcorner.com/Graphics/ScreenCaptFormMG.asp Graphics g1 = this.CreateGraphics();
     Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);
     Graphics g2 = Graphics.FromImage(MyImage);
     IntPtr dc1 = g1.GetHdc();
     IntPtr dc2 = g2.GetHdc();
     BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
     g1.ReleaseHdc(dc1);
     g2.ReleaseHdc(dc2);
     MyImage.Save(@"c:\Captured.jpg", ImageFormat.Jpeg);但是他的可以,你的不行。
    还在调试中...
      

  2.   

    试试这个:
    System.Drawing.Bitmap myImage = new System.Drawing.Bitmap(Screen.PrimaryScreen.Bounds.Width,  
    Screen.PrimaryScreen.Bounds.Height,System.Drawing.Imaging.PixelFormat.Format16bppRgb555); 
    Graphics gr1 = Graphics.FromImage(myImage);  
    IntPtr dc1 = gr1.GetHdc();  
    IntPtr dc2 = GetWindowDC(GetDesktopWindow());  
    BitBlt(dc1, 0, 0, Screen.PrimaryScreen.Bounds.Width,  
    Screen.PrimaryScreen.Bounds.Height, dc2, 0, 0,13369376);  
    gr1.ReleaseHdc(dc1);