C#winform panel1截屏 或者是 保存某个控件为图片(解决有些不显示控件的问题)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using ThoughtWorks.QRCode.Codec;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;



        [System.Runtime.InteropServices.DllImportAttribute("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 void button13_Click(object sender, EventArgs e)

            Graphics g1 = panel1.CreateGraphics();
            Image myImage = new Bitmap(this.panel1.Width, this.panel1.Height, g1);
            Graphics g2 = Graphics.FromImage(myImage);
            IntPtr dc1 = g1.GetHdc();
            IntPtr dc2 = g2.GetHdc();
            BitBlt(dc2, 0, 0, this.panel1.Width, this.panel1.Height, dc1, 0, 0, 13369376);
            myImage.Save(@"NewImage.bmp ", ImageFormat.Bmp);