C#实战小技巧(八):将剪切板中的内容保存为图片

进行C#开发时,可以将复制到剪切板中的内容转为HTML文件,再将HTML页面转为图片进行保存,示例效果如下。
被复制的Excel表格:
这里写图片描述
生成的图片:
这里写图片描述
实现上述功能的主要代码如下,能够将从Word、Excel、网页等地方复制的内容导出,并保存为图片。
代码:

        public MainWindow()
        {
            InitializeComponent();
            // 加载键盘监听事件
            this.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
        }

        // C#内置浏览器对象
        private System.Windows.Forms.WebBrowser webBrowser;

        /// <summary>
        /// 监听键盘按键事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainWindow_KeyDown(object sender, KeyEventArgs e)
        {
            //同时按下了Ctrl + V键(V要最后按,因为判断了此次事件的e.Key)
            //修饰键只能按下Ctrl,如果还同时按下了其他修饰键,则不会进入
            if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.V)
            {
                if (Clipboard.ContainsData(DataFormats.Html))
                {
                    //将剪切板中的内容先转为HTML,再转成图片
                    string html = Clipboard.GetData(DataFormats.Html).ToString();
                    //去除HTML文件中的文件源信息部分
                    html = html.Substring(html.IndexOf("<html"));
                    webBrowser = new System.Windows.Forms.WebBrowser();
                    //是否显式滚动条
                    webBrowser.ScrollBarsEnabled = false;
                    //加载 html
                    webBrowser.DocumentText = html;
                    //页面加载完成执行事件
                    webBrowser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
                }
            }
        }

        /// <summary>
        /// 表格html加载完毕事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void webBrowser_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
        {
            //获取解析后HTML的大小
            System.Drawing.Rectangle rectangle = webBrowser.Document.Body.ScrollRectangle;
            int width = rectangle.Width;
            int height = rectangle.Height;

            //设置解析后HTML的可视区域
            webBrowser.Width = width;
            webBrowser.Height = height;

            string filePath = string.Empty;
            using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(width, height))
            {
                webBrowser.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, width, height));

                //设置图片文件保存路径和图片格式,格式可以自定义
                string dir = new StringBuilder(AppDomain.CurrentDomain.BaseDirectory).Append(ICTResources.ICTUser.Session.useraccount).Append("\\Image").ToString();
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                filePath = new StringBuilder(dir).Append("\\").Append(DateTime.Now.ToString("yyyyMMddHHmmss.")).Append("png").ToString();
                bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
            }

            if (File.Exists(filePath))
            {
                messageMethods.SendChosenPicture(filePath);
            }
        }
已标记关键词 清除标记
相关推荐
编辑推荐 本书为C#经典名著!是Wrox红皮书中最畅销的品种之一。从第1版开始就名满天下,其第3版被评选为2005年最权威的十大IT图书之一,并荣获 “2005年度引进版科技类优秀图书”奖。更可贺的是,其第4版又荣获“2006年最受读者喜爱的十大技术开发类图书”!第6版在详尽论述C# 2005的基础上,又增加了.NET 3.0 Framework的新特性,更加完善了C#的技术。是缺乏C#或.NET编程经验,但有其他语言编程经验的开发人员,以及了解.NET 2.0,而且对.NET 3.0和Visual Studio 2005有兴趣的程序员全面掌握C#的首选教程。   本书以.NET 3.5和VS2008为基础,是C# 2008及其环境的最终指南。本书首先介绍了.NET的体系结构和方法论,解释了C#语言不能孤立看待,而必须放在.NET Framework中考虑的原因。在论述了C#的基础知识之后,深入探讨了C#编程的所有内容。   本书添加了许多新示例,来解释如何使用C#完成各种任务。另外,还增加了一些全新的章节,包括LINQ、SQL、ADO.NET实体、Windows Communication Foundation、Windows Workflow Foundation、Windows Presentation Foundation、数组、系统事务处理、跟踪、事件日志等,使读者能清晰、全面地理解C# 2008提供的所有功能。   本书主要内容   编写Windows应用程序和Windows服务   用ASP.NET 3.5编写Web页面   用C#处理XML的技巧   用ADO.NET访问数据库   用C# 2008生成图形   各种C#插件   用LINQ轻松地处理SQL Server数据库和XML   本书读者对象   本书适用于希望学习C#开发语言的最新版本的、有经验的开发人员。   2005年最权威的十大IT图书!2005年度引进版科技类优秀图书!2006年最受读者喜爱的十大技术开发类图书!2007年最畅销的C#零售图书!    1.C#经典名著!是Wrox红皮书中最畅销的品种之一。   2.其第3版被评选为2005年最权威的十大IT图书之一,并荣获“2005年度引进版科技类优秀图书”奖   3.其第4版又荣获“2006年最受读者喜爱的十大技术开发类图书”   4.是2007年最畅销的C#零售图书   5.2008年,最新的第6版在详尽论述C# 2005的基础上,又增加了.NET 3.5 Framework的新特性,更加完善了C#的技术   6.以.NET 3.5和Visual Studio 2008为基础,是程序员全面掌握C#的首选教程 内容简介 C#经典名著!也是Wrox皮书中最畅销的品种之一,从第 1版开始就名满天下:其第3版被中华读书报、CSDN、《程序员》等机构评选为2005年最权威的十大IT图书之一;在中国版协、中国出版科学研究所、《出版参考》杂志组织的“2005年度输出版、引进版优秀图书”评选活动中获得“2005年度引进版科技类优秀图书”奖其第4版被多家IT相关机构和媒体联合评为“2006年最受读者喜爱的十大技术开发类图书”。 第6版面向C#2008和,NET 3.5,在全面展示,NET和C#新特性的同时继续完善原有的内容,是有一些C#基础知识的读者或者想迁移到C#的其他程序员全面掌握C#2008的首选教程。 作者简介 李铭,信息管理专业硕士,拥有近8年的系统开发经验,曾开发过监考系统、宽带教学系统、人员管理系统和综合业务系统等,现就职于某部队研究所,从事.NET、Oracle和Linux等方面的开发和管理工作,曾发表过多篇计算机专业论文,也翻译和编写过几部著作。 黄静,计算机专业博士,在程序设计、软件工程和网络安全等方面有着多年的研究和实战经验,曾为.NET技术在国内的推广作出了重要贡献,翻译和发表了多篇有关.NET的技术文档或文章。 目录: 第Ⅰ部分 C# 语言 第1章 .NET体系结构 1.1 C#与.NET的关系 1.2 公共语言运行库 1.2.1 平台无关性 1.2.2 提高性能 1.2.3 语言的互操作性 1.3 中间语言 1.3.1 面向对象和接口的支持 1.3.2 相异值类型和引用类型 1.3.3 强数据类型 1.3.4 通过异常处理错误 1.3.5 特性的使用 1.4 程序集 1.4.1 私有程序集 1.4.2 共享程序集 1.4.3 反射 1.5 .NET Framework类 1.6 命名空间 1.7 用C#创建.NET应用程序 1.7.1 创建ASP.NET应用程序 1.7.2 创建Windows窗体 1.7.3 使用Windows Presentation F
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页