绘制600 dpi以上的字体不会消除别名(c#)

时间:2015-01-25 20:51:30

标签: c# fonts antialiasing

(使用VS2013在C#中编程)

我使用不同的DPI(每英寸点数)设置保存了四张图像:96 dpi,192 dpi,384 dpi和768 dpi。我从文件加载后绘制这些图像。我已将TextRenderingHint设置为ClearTypeGridFit。这使用96,192或384 dpi图像非常好地渲染字体。使用768 dpi的图像,无法提供平滑渲染。

// retrieve the image from project resource
Image im = null;
im = <myproject>.Resources.image_at_96dpi;

// link a graphics instance to image instance
Graphics gr = Graphics.FromImage(im);

// set the fonts drawing to highest quality
gr.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

// create a font and brush for drawing onto the image
var font_example = new System.Drawing.Font("Microsoft Sans Serif", 12.0f);
var brush_example = new SolidBrush(System.Drawing.Color.Black);
var point_example = new PointF(50.0f, 50.0f);

// draw text onto the image
gr.DrawString("some text", font_example, brush_example, point_example);

上面的代码产生想要的结果(也适用于192和384 dpi)。

将上述代码的前三行更改为以下代码时:

// retrieve the image from project resources
Image im = null;
im = <myproject>.Resources.image_at_768dpi;

文本已呈现,但不是很好/平滑/消除锯齿。

有人理解为什么会这样吗?

我发现在768 dpi图像上使用低于9.0f的字体大小时效果很好......但由于PageUnitDisplay,这限制了我太小的字体。

0 个答案:

没有答案