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

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# 保存窗口为图片(保存纵断面图)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115605.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中cPickle用法「建议收藏」

    python中cPickle用法「建议收藏」在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:“cPickle–Afasterpickle”。cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等。而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复。在cPi…

    2022年6月29日
  • Python机器学习笔记:不得不了解的机器学习面试知识点(1)[通俗易懂]

    Python机器学习笔记:不得不了解的机器学习面试知识点(1)[通俗易懂]机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因

    2022年7月6日
  • springboot到底是什么_Springboot注解

    springboot到底是什么_Springboot注解SpringBoot是干哈的介绍:springboot是由Pivotal团队提供的全新框架。spring的出现是为了解决企业级开发应用的复杂性,spring的通过注册bean的方式来管理类,但是随着业务的增加,使用xml配置bean的方式也显得相当繁琐,所以springboot就是为了解决spring配置繁琐的问题而诞生的,并且近几年来非常流行开启我的第一个HelloSpringBoot!开启方式根据https://start.spring.io网址创建一个springboot项目

    2022年9月25日
  • 学员管理系统(完整版)

    前言:学员管理系统是刚接触python时算是一个比较难的小项目,毕竟第一次接触这样的思维逻辑,不过用心学起来还是很有趣的,发现乐在其中,也就不觉得难了。下面给大家分享一下学员管理系统较为完整的代码(当然其中肯定有很多不足,毕竟是新手,菜鸟小程序猿,还请见谅!多谢!)言归正传:学员管理拆分为一下步骤:首先:先定义存储所有学员信息的大列表students=[]添加学员,代码如下:查…

    2022年4月5日
  • 免费流媒体服务器(AMS3.0 非AdobeMediaServer)

    免费流媒体服务器(AMS3.0 非AdobeMediaServer)自己从事流媒体近20载,从没有可用的流媒体服务器到现在服务器遍地开花.但尽管开源服务器众多,功能强大,但却没有可以直接拿来使用的.原因是配置安装困难,没有自己想要的接口,很难与现有系统对接.为解决这个问题,自己就做了一个简单的安装包,并且提供了众多的接口可以与WEB进行对接,这样配置管理大大简化,安装使用都非常简单.服务器单机下保守至少可以大码流3000并发吧,性能非常不错.你可以做集群.提供HTTPRTMP协议,支持HLS.详细可以看下面的使用说…

    2022年6月12日
  • 12306自动刷票下单-登录篇(一)

    12306自动刷票下单-登录篇(一)12306网站推出图片验证码以后,对于抢票软件就提出了更高的要求,本篇并不涉及自动识别验证码登录(主要是博主能力所限),提供一个途径-打码平台,这个几乎是可以激活成功教程所有验证码了,本篇主要是分享一下12306网站登录的流程的学习,勿吐槽,有问题请指正,博主也是刚开始接触爬虫,大家共勉共勉。废话不多说了,直接干吧 首先打开12306登录页面https://kyfw.12306.cn/otn/login/…

    2022年10月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号