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

本文介绍了如何使用C#的GDI+库来创建高质量的图像和字体,特别是在处理Bitmap、Graphics对象时如何避免图像失真和文字锯齿。通过设置Graphics的SmoothingMode、CompositingQuality、InterpolationMode和TextRenderingHint属性,可以显著提升图片的清晰度和文字的平滑度。作者提供了一个简单的示例,展示了如何生成印章签名效果,并提供了四种字体选择。要运行代码,确保系统中安装了指定的字体或者进行相应替换。

对于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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值