对于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页面:
<%
@ 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

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

被折叠的 条评论
为什么被折叠?



