(使用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的字体大小时效果很好......但由于PageUnit
是Display
,这限制了我太小的字体。