• C# 保存窗口为图片(保存纵断面图)


    源代码例如以下:

         #region 保存纵断面截图
    
            private void button_save_Click(object sender , EventArgs e)
            {
                SaveFileDialog saveImageDialog = new SaveFileDialog();
                saveImageDialog.Title = "保存纵断面图";
                saveImageDialog.DefaultExt = ".png";
                saveImageDialog.FileName = Linefeaturelayer.Name + "纵断面图";
                saveImageDialog.InitialDirectory = "C:\";
    
                DialogResult dr = saveImageDialog.ShowDialog();
                if (dr==DialogResult.OK)
                {
                    CaptureImage(saveImageDialog.FileName);
                    MessageBox.Show("保存成功。");
                }
    
            }
    
            private void CaptureImage(string path)
            {
                try
                {
                    //获得当前屏幕的大小
                    Rectangle rect = new Rectangle();
                    rect = Screen.GetWorkingArea(this);
                    //创建一个以当前屏幕为模板的图象
                    Graphics g1 = this.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(path , ImageFormat.Png);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message + " 保存图片失败。"); 
                }
            }
    
            //声明一个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  // 光栅的处理数值
                
                );
    
            #endregion
    效果图:



  • 相关阅读:
    微信企业号第三方应用开发[二]——创建应用
    微信企业号第三方应用开发[一]——创建套件
    微信企业号第三方应用开发[目录]
    微信企业号第三方应用开发[前言]
    基于netty的心跳机制实现
    Jquery使select、radio某项选中
    画廊插件baguetteBox
    HTML5实现下载文件且指定下载文件名
    Python的生成器和生成器表达式
    Python的闭包以及迭代器
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5314576.html
Copyright © 2020-2023  润新知