string filePath = ""; private void tsbtnPrint_Click(object sender, EventArgs e) { //C#截屏打印 CaptureScreen(); if (this.saveFileDialog1.ShowDialog() == DialogResult.OK) { filePath = this.saveFileDialog1.FileName; FileStream file = new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.Write,FileShare.None); //克隆Bitmap对象 Bitmap bmp = new Bitmap(memoryImage); bmp.Save(file, System.Drawing.Imaging.ImageFormat.Bmp); //filePath = new BinaryWriter(mem.ToArray()); bmp.Dispose(); } } [System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern long BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop); /// <summary> /// IntPtr hdcDest指目标设备//到哪里去 /// IntPtr hdcSrc指源设备/从哪里来 /// </summary> private Bitmap memoryImage; public void CaptureScreen() { Graphics mygraphics = this.panelCard.CreateGraphics();//将面板对象给Graphics源 Size s = panelCard.Size; memoryImage = new Bitmap(s.Width,s.Height,mygraphics); Graphics memoryGraphics = Graphics.FromImage(memoryImage);//bmp文件目标 IntPtr dc1 = mygraphics.GetHdc(); IntPtr dc2 = memoryGraphics.GetHdc(); BitBlt(dc2, 0, 0, this.panelCard.ClientRectangle.Width, this.panelCard.ClientRectangle.Height,dc1,0,0,13369376); mygraphics.ReleaseHdc(dc1); memoryGraphics.ReleaseHdc(dc2); }