2

我正在使用 System.Drawing 动态生成一些图像,其中包括基本图像以及一些拉伸/缩放的文本。在我的 LOCALHOST 环境中一切都很好而且很整洁,但是当我发布到我的服务器(Server 2008)时,我失去了一些抗锯齿并且图像质量变得粗糙。

这是从我的本地环境(Windows 7)复制的示例,然后从我的服务器(Server 2008)复制

Windows 7的:

在此处输入图像描述

视窗 2008:

在此处输入图像描述

如您所见,图像的大小相同,字体的缩放比例也相同。服务器版本似乎没有消除锯齿来平滑边缘。这是主要的代码:imgSign 和 grSign 是已建立的图像和图形对象,具有设定的大小/背景颜色,文本将被缩放/绘制到该对象上。

'Requested size of test
Dim textSize As SizeF = grSign.MeasureString(textString, font)
Dim intTextWidth As Integer = textSize.Width
Dim intTextHeight As Integer = textSize.Height

'Create image to hold text
Dim img As Drawing.Image = New Bitmap(intTextWidth, intTextHeight)
Dim gr As Graphics = Graphics.FromImage(img)

'Smoothing mode
gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
gr.TextRenderingHint = Text.TextRenderingHint.AntiAlias

'Scale Text
Dim sngScaleWidth As Single = imgSign.Width / intTextWidth
If sngScaleWidth > 1 Then sngScaleWidth = 1 'Don't scale down width if it doesn't need to be
Dim sngScaleHeight As Single = imgSign.Height / intTextHeight
grSign.ScaleTransform(sngScaleWidth, sngScaleHeight)

'Draw text
gr.DrawString(textString, font, Brushes.White, 0, 0)

是否有一些我必须解决的 Server 2008 上没有的功能,或者我可以设置一个开关来提高质量,还是我需要寻找其他地方?

4

1 回答 1

2

也尝试在您的 Graphics gr 上设置此设置

gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

存档更好的质量,并仔细检查您使用的字体在两个系统上是否相同。

于 2012-10-30T20:16:26.703 回答