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

效果图:

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

时间: 2024-10-23 18:45:49

C# 保存窗体为图片(保存纵断面图)的相关文章

C# 图片保存到数据库和从数据库读取图片并显示

图片保存到数据库的方法: public void imgToDB(string sql)        {   //参数sql中要求保存的imge变量名称为@images            //调用方法如:imgToDB("update UserPhoto set [email protected] where UserNo='" + temp + "'");            FileStream fs = File.OpenRead(t_photo.Te

【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片

本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp图像文件的类型.文件大小等信息. (2)位图信息数据结构,包含Bmp图像的宽.高.压缩类型等信息. (3)颜色表,该部分可选,有些位图需要,有些位图(如24位真彩色位图)不需要. (4)位图数据. 1.1位图头文件数据结构 位图头文件数据结构包含Bmp图像文件的类型.文件大小等信息,占用14个字节.

PHP《将画布(canvas)图像保存成本地图片的方法》

用PHP将网页上的Canvas图像保存到服务器上的方法 2014年6月27日 歪脖骇客 发表回复 8 在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名. 这需要我们评审软件里提供这样一个功能:打开浏览器,登录,进入评审意见页,页面最下部有个方块区域,用户在这里用触摸笔进行签名,然后这个签名将会保持 的服务器上. 这样的一个需求在当时是让我大费周折,但如今想起来,如果用html5的canvas实现,真是太简单了.在

ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

ASP.NET下载远程图片保存到本地的方法.保存抓取远程图片 2012-05-16 11:25:51     我来说两句      收藏    我要投稿 以下介绍两种方法:1.利用WebRequest,WebResponse 类WebRequest wreq=WebRequest.Create("http://up.2cto.com/2012/0516/20120516112717995.gif");    HttpWebResponse wresp=(HttpWebResponse)

关于数据库保存的二进制图片无法在colorbox插件中显示的解决办法

colorbox是非常优秀的图片显示插件,但最近想用它来显示保存在数据库中的二进制图片却发现问题,就是无法正确显示,显示出来的都是一些乱码字符,究竟问题出在那呢? 于是循例百度了一下,是有人也碰到这个问题,但没有提出解决方案呀!看来只能自己分析原因了... 首先说下我的开发环境:ASP.NET MVC+COLORBOX,那问题不是出在MVC就是COLORBOX上了. 1.MVC分析: 无论图片保存数据库还是保存在目录文件,都是无非转换为二进制流返回比浏览器,于是我试下用COLORBOX显示保存在

iOS--将图片保存至本地相册

今天做聊天,领导说对方给我发一个图片,我要保存到本地,IOS的UIKit Framework提供了UIImageWriteToSavedPhotosAlbum方法对图像进行保存,该方法会将image保存至用户的相册中: 上代码: void UIImageWriteToSavedPhotosAlbum ( UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo ); 参数说明: image : 需

js截图及绕过服务器图片保存至本地(html2canvas)

今天要分享的是用html2canvas根据自己的需求生成截图,并且修复html2canvas截图模糊,以及绕过服务器图片保存至本地. 只需要短短的几行代码,就能根据所需的dom截图,是不是很方便,但是生成的图片模糊 //直接选择要截图的dom,就能截图,但是因为canvas的原因,生成的图片模糊 html2canvas(document.querySelector('div')).then(function(canvas) { document.body.appendChild(canvas);

Word中截取部分内容并保存为jpg图片的方法

private void button1_Click(object sender, EventArgs e) { var appWord = new Microsoft.Office.Interop.Word.Application(); var doc = new Microsoft.Office.Interop.Word.Document(); object oMissing = System.Reflection.Missing.Value;//这个是什么东西,我始终没搞明白-_- //打

用PHP和MySQL保存和输出图片

mysql可以直接保存二进制的数据,数据类型是blob.   通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之    处就在于两者所需要保存的数据量不同.MySQL数据库使用专门的字段来保存大容量的数据,数据    类型为BLOB.        MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可    变数量的数据.BLOB具有四种类型,分别是TINYBLOB,BLOB,  MEDIUMBLOB  和LONGBLOB,区别在于