C#使用GDI+绘制高质量图和字体

对于GDI+,在正常的操作,Bitmap-- Graphcis -- DrawImage或者DrawString ,生成图片的话,会产生很多杂点,或者是图片质量不稳定..尤其是在读取图片后,生成缩略图之后,文件会被压缩而失真..

主要原因是因为没有重新设置Graphics的几个属性..

1.Graphics.SmoothingMode属性: 例如SmoothingMode.HighQuality可以产生高质量图片,但是效率低.

2.Graphics.CompositingQuality 属性: 例如:CompositingQuality.HighQuality也是产生高质量图,效率低下.

3.Graphics.InterpolationMode 属性,例如:InterpolationMode.HighQualityBicubic与前两个也是同样的效果.

这三个属性的值都是enum,具体的enum参数可以查看MSDN的说明..在这里就我不赘述..
如果是对图片进行放大,缩小,可以调整Graphics.CompositingQuality Graphics.InterpolationMode 两个属性..如果是图片生成,则可以调整Graphics.SmoothingMode属性..

另外一个问题就是关于文字生成的..按照正常的模式生成的文字,可以很明显的看到文字带有锯齿..解决的办法也是需要修改Graphics的一个属性: Graphics.TextRenderingHint...注意一点,修改TextRenderingHint的话,需要引入System.Drawing.Text,例如:Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

 经过对这四个属性的修改,操作大部分的图片之后,产生的结果都是比较让人满意的..

在这里提供一个简单的例子..是生成印章签名的效果..提供四种字体选择..并产生一个图片..如果你的机器中没有安装指定的几种字体,你需要把字体修改一下...直接把代码拷贝..就可以看到效果...

ASPX页面:
 

 1 <% @ Page language = " c# "  Codebehind = " underWrite.aspx.cs "  AutoEventWireup = " false "  Inherits = " testItem.movie.underWrite "   %>
 2 <! DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.0 Transitional//EN "   >
 3 < HTML >
 4      < HEAD >
 5          < title > underWrite </ title >
 6          < meta name = " GENERATOR "  Content = " Microsoft Visual Studio .NET 7.1 " >
 7          < meta name = " CODE_LANGUAGE "  Content = " C# " >
 8          < meta name = " vs_defaultClientScript "  content = " JavaScript " >
 9          < meta name = " vs_targetSchema "  content = " http://schemas.microsoft.com/intellisense/ie5 " >
10      </ HEAD >
11      < body MS_POSITIONING = " GridLayout " >
12          < form id = " Form1 "  method = " post "  runat = " server " >
13              < asp:Image id = " Image1 "  style = " Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 360px "  runat = " server " ></ asp:Image >
14              < asp:HyperLink id = " HyperLink1 "  style = " Z-INDEX: 105; LEFT: 304px; POSITION: absolute; TOP: 312px "
15                 runat = " server "  NavigateUrl = " ../mv/index.html " > 大头帖 </ asp:HyperLink >
16              < asp:TextBox id = " name "  style = " Z-INDEX: 104; LEFT: 208px; POSITION: absolute; TOP: 144px "  runat = " server "
17                 MaxLength = " 4 " ></ asp:TextBox >
18              < asp:RadioButtonList id = " fontType "  style = " Z-INDEX: 103; LEFT: 208px; POSITION: absolute; TOP: 184px "
19                 runat = " server "  Width = " 240px " >
20                  < asp:ListItem Value = " 方正黄草简体 "  Selected = " True " > 方正黄草简体 </ asp:ListItem >
21                  < asp:ListItem Value = " 汉鼎繁淡古 " > 汉鼎繁淡古 </ asp:ListItem >
22                  < asp:ListItem Value = " 汉鼎繁印篆 " > 汉鼎繁印篆 </ asp:ListItem >
23                  < asp:ListItem Value = " 经典繁桟亭 " > 经典繁桟亭 </ asp:ListItem >
24              </ asp:RadioButtonList >
25              < asp:Button id = " bu "  style = " Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 312px "  runat = " server "
26                 Text = "  刻 字  " ></ asp:Button >
27          </ form >
28      </ body >
29 </ HTML >
30


CS文件:

  1 using  System;
  2 using  System.Collections;
  3 using  System.ComponentModel;
  4 using  System.Data;
  5 using  System.Drawing;
  6 using  System.Drawing.Drawing2D;
  7 using  System.IO;
  8 using  System.Web;
  9 using  System.Web.SessionState;
 10 using  System.Web.UI;
 11 using  System.Web.UI.WebControls;
 12 using  System.Web.UI.HtmlControls;
 13
 14 namespace  testItem.movie
 15 {
 16    /// <summary>
 17    ///        生成印章签名
 18    /// </summary>

 19    public class underWrite : System.Web.UI.Page
 20    {
 21        protected System.Web.UI.WebControls.Image Image1;
 22        protected System.Web.UI.WebControls.RadioButtonList fontType;
 23        protected System.Web.UI.WebControls.HyperLink HyperLink1;
 24        protected System.Web.UI.WebControls.Button bu;
 25        protected System.Web.UI.WebControls.TextBox name;
 26        
 27        private void Page_Load(object sender, System.EventArgs e) 
 28        {
 29            Image1.Visible = false;
 30        }

 31
 32        Web 窗体设计器生成的代码
 53
 54        private void Button1_Click(object sender, System.EventArgs e)
 55        {
 56            string Name = name.Text;
 57            if ( Name.Length < 4 ) {
 58                Response.Write( "请输入最少4个字符!" );
 59                return;
 60            }

 61            
 62            string FontName = fontType.SelectedValue;
 63            
 64            int fontSize = 36;
 65            int x = 10;
 66            int y = 10;
 67            
 68            switch( FontName ) {
 69                case "方正黄草简体":
 70                    x = -8;
 71                    y = -2;
 72                    fontSize = 42;
 73                    break;
 74                    
 75                case "汉鼎繁淡古":
 76                    x = -10;
 77                    y = -2;
 78                    break;
 79                
 80                case "汉鼎繁印篆":
 81                    x = -15;
 82                    y = -2;
 83                    break;
 84                
 85                case "经典繁桟亭":
 86                    fontSize = 34;
 87                    x = -10;
 88                    y = -3;
 89                    break;                    
 90            }

 91            
 92            Bitmap bm = new Bitmap(110,100,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
 93            Font font = new Font(FontName,fontSize,FontStyle.Bold);
 94            
 95            Graphics g = Graphics.FromImage( bm );
 96            
 97            g.TextRenderingHint =  System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
 98            
 99            /*    这里的三个属性可以根据情况开放.
100             * 
101            //g.CompositingQuality = CompositingQuality.HighQuality; 
102            //g.SmoothingMode = SmoothingMode.HighQuality; 
103            //g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
104            
105            */

106            g.Clear(Color.Red);        //赋予图像一个背景色
107            
108            g.DrawString( Name.Substring(2,1),font,new SolidBrush(Color.White),0,2 );
109            g.DrawString( Name.Substring(3,1),font,new SolidBrush(Color.White),0,45-y );
110            g.DrawString( Name.Substring(0,1),font,new SolidBrush(Color.White),35-x,2 );
111            g.DrawString( Name.Substring(1,1),font,new SolidBrush(Color.White),35-x,45-y );
112            g.Dispose();
113            //设置保存路径
114            bm.Save( Server.MapPath("../upload/c.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg );
115            bm.Dispose();
116            //显示产生的图片
117            Image1.ImageUrl = Server.MapPath("../upload/c.jpg") ;
118            Image1.Visible = true;
119        }

120    }

121}

122
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58257.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件设计师:09-软件工程

章节章节01 - 计算机组成原理与体系结构07 - 法律法规与标准化与多媒体基础02 - 操作系统基本原理08 - 设计模式03 - 数据库系统09 - 软件工程04 - 计算机网络10 - 面向对象05 - 数据结构与算法11 - 结构化开发与UML06 - 程序设计语言与语言处理程序基础12 - 下午题历年真题End…

【中级软件设计师】—(针对上午题)软件工程上(三十五)

【中级软件设计师】—&#xff08;针对上午题&#xff09;软件工程&#xff08;三十五&#xff09; 一、CMM 1 2 3 4 5 二、能力成熟度模型集成&#xff08;CMMI&#xff09; 6 7 8 9 三、软件过程模型 &#xff08;一&#xff09;、瀑布模型 &#xff08;二&#xff09;、V模…

软件工程_绘制数据流图

软件工程_绘制数据流图 实验目的&#xff1a; 1、掌握数据流的分析方法 2、掌握数据流图的绘制 实验原理&#xff1a; 数据流图&#xff08;DFD&#xff09;是软件系统系统的逻辑模型&#xff0c;仅仅描绘数据在软件中流动&#xff08;从输入移动到输出&#xff09;的过程中所…

20230120英语学习

How Animals May Have Conquered Snowball Earth “雪球地球”时期&#xff0c;动物是如何存活的&#xff1f; Planet Earth used to be something like a cross between a deep freeze and a car crusher.During vast stretches of the planet’s history, everything from p…

Time For Kids 很不错的英语学习周刊

英语&#xff0c;是全世界使用范围最广的一门语言&#xff0c;因此&#xff0c;学好英语是一件很重要的事情&#xff0c;而它的重要和存在形式也不仅仅是在学习分数上&#xff0c;英语是一种语言&#xff0c;也是一门工具&#xff0c;学好它&#xff0c;对于我们&#xff0c;尤…

大数据工程师应聘要求高么?好找工作么

大数据开发工程师该岗位对于技术要求较高&#xff0c;有一定的技术门槛。大数据工程师不少细分方向&#xff0c;不同的方向需要具备不同的知识结构&#xff0c;分别是大数据底层平台研发、大数据应用开发、大数据分析和大数据运维。 大数据开发工程师负责数据仓库建设、ETL开发…

大数据好找工作么?前景如何

大数据好不好找工作不是一概而论的&#xff0c;要根据你个人的学历情况&#xff0c;掌握技能程度&#xff0c;所在城市招聘需求&#xff0c;甚至是你的面试能力和简历是否突出优势有关。 但是毋庸置疑的是&#xff0c;大数据目前的发展前景还是相当优秀的。 我们知道&#xf…

都说大数据前景很好,那么大数据培训出来就业情况如何?

大数据的就业形式还是很不错&#xff0c;就业薪资还是很高&#xff0c;在网上随便一搜&#xff0c;如图 如果大数据还在自学中的同志们&#xff0c;赠送你们一张学习路线

如何读一个在职在线的海外名校的计算机硕士

对于参加工作几年的朋友&#xff0c;可能面临职场晋升压力&#xff0c;而身边的同事又都拥有硕士、博士学历&#xff0c;此时迫切想提升学历。 现在以某教育机构和伊利诺伊理工大学的在线硕士项目为例&#xff0c;作简单的科普介绍&#xff0c;事先说明此非推广宣传&#xff0…

计算机专业留学美国前景一如何,美国计算机专业国内外就业前景到底如何?和你想的一样吗?...

原标题&#xff1a;美国计算机专业国内外就业前景到底如何&#xff1f;和你想的一样吗&#xff1f; 在我们选择专业的时候&#xff0c;“就业前景”是几乎每个同学和家长都会考虑的问题。我们都知道美国大学有很多专业&#xff0c;其中计算机科学专业是绝对的优势也是申请的热门…

英国计算机专业申请条件有哪些?就业前景怎么样?

曾经有人说过&#xff0c;计算机是人类历史上最伟大的发明&#xff0c;因为计算机的出现使人们的工作效率大大提升了&#xff0c;而且自从计算机越来越普遍之后&#xff0c;学习计算机专业的学生也越来越多了&#xff0c;而英国在计算机领域的造诣非常高&#xff0c;因此去英国…

ChatGPT评中国最好就业的十大专业!人工智能,数据科学,网络安全排名前列!...

以下是ChatGPT认为未来考研最好就业的十大专业&#xff0c;并按照重要性从高到低排列&#xff08;仅供娱乐哦&#xff09; 需要注意的是&#xff0c;这只是ChatGPT的看法&#xff0c;其他人可能会有不同的观点和评价标准。 此外&#xff0c;不同的发展阶段和政策导向也会对专业…

商业创业计划书的21条重要事项

创业者们&#xff0c;商业计划书是你们找VC的敲门砖。没有一块有分量的敲门砖&#xff0c;怕你们敲不开VC的大门。 这世界上永远是来要钱的人多&#xff0c;能给出去的钱少&#xff0c;僧多粥少&#xff0c;融资是有门槛的。如果没有一份有分量的商业计划书&#xff0c;你根本就…

“ 奋斗者耕耘论坛 ” 商业计划书 | 内卷 | 大学生创业计划书 | 大创 | 创新杯项目 | 如何财富自由 | 怎么发财 | 赚钱方法

1. 1. 产品背景 产品背景 2020 年, 各行各业的奋斗者们都很焦虑. 他们在”内卷”的大环境下压力 从从. 无论是大学还是职场, 奋斗者们努力着挥洒汗水, 希望实现自己的梦想, 过上追求的美好生活. 无论是学业的压力还是职场的压力, 让这些曾经高考的 佼佼者, 毕业生中的优胜者也苦…

2021大学生创业计划书范例

想看更多算法题&#xff0c;可以扫描上方二维码关注我微信公众号“数据结构和算法”&#xff0c;截止到目前我已经在公众号中更新了500多道算法题&#xff0c;其中部分已经整理成了pdf文档&#xff0c;截止到目前总共有800多页&#xff08;并且还会不断的增加&#xff09;&…

“互联网+”创新创业计划书(二)

“智能便携式电动滑板”项目介绍&#xff1a; ------Intelligent portable electric skateboards

创业计划书

要求 清楚明了、真实可信、简明扼要、图表、逻辑性强、佐证材料 作用&#xff1a;指明目标 给员工绘制蓝图给投资方看 创业须知 创业创意选择要差异化、尽量避免同仁化 多了解法律知识 如何介绍自己的公司或产品 a. 模板法&#xff1a;(公司的名称)提供的(产品或服务)利…

TikTok剪辑系统升级:照片模式增加文案字数,达人合作平台更新

武汉瑞卡迪电子商务有限公司&#xff1a;此次TikTok针对应用内的剪辑功能进行了优化升级&#xff0c;为用户建立了一个更实用的剪辑系统&#xff0c;融合多种功能于一体&#xff0c;现在TikTok内可直接完成裁剪视频、编辑音频、设置画中画、调节视频播放速度、设置画面边框大小…

剪映专业版字幕导出随笔

目录 剪映专业版字幕导出随笔环境准备字幕生成字幕捕获字幕处理小结 剪映专业版字幕导出随笔 最近有个识别视频中人声转成字幕并导出的小需求&#xff0c;找了一圈发现头条系的剪映专业版真好用&#xff0c;借助剪映专业版的识别字幕功能&#xff0c;以及抓包工具 fiddler 获取…

AI数字人:AI数字人制作初探及相关开源简介

文章目录 [toc]简介一、SadTalker二、Wav2Lip三、Thin-Plate Spline Motion Model四、Real_Time_Image_Animation五、Text2Speech六、语言模型其他 简介 数字人这名字听着稀奇又别扭&#xff0c;其实它最初的原型大家都听过——NPC。玩过游戏的应该都知道&#xff0c;也就是游…