zoukankan      html  css  js  c++  java
  • 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
    效果图:



  • 相关阅读:
    centos6 Cacti部署文档
    nginx 3.nginx+fastcgi
    nginx 2.基本配置
    nginx 1.安装
    mongodb入门教程二
    mongodb入门教程
    一款jQuery立体感动态下拉导航菜单特效
    一款jQuery仿海尔官网全屏焦点图特效代码
    一款非常炫酷的jQuery动态随机背景滚动特效
    一款jquery编写图文下拉二级导航菜单特效
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5314576.html
Copyright © 2011-2022 走看看