可以调用BitBlt API将整个Form画到一个Image上,1. Import the BitBlt API function 
2. Capture the image of the form 代码片断如下:[DllImport("gdi32.dll")] 
private static extern bool BitBlt( 
IntPtr hdcDest, // handle to destination DC 
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 
); private const Int32 SRCCOPY = 0xCC0020; private Bitmap memImage; private void PrepareImage() 

Graphics graphic = this.CreateGraphics(); 
Size s = this.Size; 
memImage = new Bitmap(s.Width, s.Height, graphic); 
Graphics memGraphic = Graphics.FromImage(memImage); 
IntPtr dc1 = graphic.GetHdc(); 
IntPtr dc2 = memGraphic.GetHdc(); 
BitBlt(dc2, 0, 0, this.ClientRectangle.Width, 
this.ClientRectangle.Height,dc1, 0, 0, SRCCOPY); 
graphic.ReleaseHdc(dc1); 
memGraphic.ReleaseHdc(dc2); 
} 下面这个地方也有一个完整的代码,有可能要注册。
http://www.aspxcn.com/dotnetbbs/View.aspx?fbId=23&Id=85167