截图

        //声明一个API函数 
        [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
        private static extern bool BitBlt(
        IntPtr hdcDest, // 目标 DC的句柄 
        int nXDest,
        int nYDest,
        int nWidth,
        int nHeight,
        IntPtr hdcSrc, // 源DC的句柄 
        int nXSrc,
        int nYSrc,
        System.Int32 dwRop // 光栅的处理数值 
        );


        /// <summary>
        /// 保存控件的截图
        /// </summary>
        /// <param name="control">控件</param>
        public static void Screenshots(Control control)
        {
            string dirPath = System.Windows.Forms.Application.StartupPath + @"\ScreenShots\";
            string fileName = dirPath + DateTime.Now.ToString("ScreenyyyyMMddHHmmss") + ".png";
            if (!Directory.Exists(dirPath))
                Directory.CreateDirectory(dirPath);
            try
            {
                //获得控件的大小 
                Rectangle rect = new Rectangle(0, 0, control.Width - 19, control.Height - 4);
                //Rectangle rect = new Rectangle(control.PointToScreen(new Point(0,0)), control.Size);
                //创建一个以控件为模板的图象 
                Graphics g1 = control.CreateGraphics();
                //创建以控件大小为标准的位图 
                Image MyImage = new Bitmap(rect.Width, rect.Height, g1);
                Graphics g2 = Graphics.FromImage(MyImage);
                //得到控件的DC 
                IntPtr dc1 = g1.GetHdc();
                //得到Bitmap的DC 
                IntPtr dc2 = g2.GetHdc();
                //调用此API函数,实现屏幕捕获 
                BitBlt(dc2, 0, 0, rect.Width, rect.Height, dc1, 0, 0, 13369376);
                //释放掉屏幕的DC 
                g1.ReleaseHdc(dc1);
                //释放掉Bitmap的DC 
                g2.ReleaseHdc(dc2);
                //以JPG文件格式来保存 
                MyImage.Save(fileName, ImageFormat.Png);
            }
            catch (Exception e)
            {
                MessageBox.Show("截图失败:" + e.Message, "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            MessageBox.Show("截图成功!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
原文地址:https://www.cnblogs.com/baiqjh/p/2754296.html