我想在C#应用程序中使用抗锯齿字体。我已阅读here如何使用每种形式的Paint事件:
public class SmoothingFonts : System.Windows.Forms.Form
{
...
private void InitializeComponent()
{
...
this.Paint += this.SmoothingFonts_Paint;
}
private void SmoothingFonts_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Font TextFont = new Font("Verdana", 25, FontStyle.Italic);
e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
e.Graphics.DrawString("Sample Text", TextFont, Brushes.Black, 20, 150);
}
}
这可能会变得很麻烦,因为我们已经完成了很多表格。此外,在每种形式中我们都使用多种表单类型。可以全局设置TextRenderingHint
的设置吗?
编辑1
引用的例子,虽然nobugz正确指出它过时了,但帮助我意识到在这个系统中使用的最好的TextRenderingHint
是AntiAliasGridFit
。硬件平台已关闭,因此我可以确保该系统的最佳配置最适合部署应用程序的所有系统。
我可以在任何地方设置TextRenderingHint
的默认设置吗?我正在Windows Embedded Standard(以前的Windows XP Embedded)映像中运行该应用程序。
编辑2
我发现在XP系统中,您可以设置注册表默认使用的TextRenderingHint
类型。它不是 by application 方法,而是 by user 方法。注册表项是:
HKCU\Control Panel\Desktop\FontSmoothing {2 for activating font smoothing}
HKCU\Control Panel\Desktop\FontSmoothingType {1 for Antialiasing, 2 for ClearType}
感谢您的支持!
答案 0 :(得分:2)
您链接的文章既无关紧要又过时。 ClearTypeGridFit已经是启用了ClearType的计算机上的默认消除锯齿绘制模式。你应该使用TextRenderer类进行文本渲染,Graphics.DrawString()有问题。
您可以使用SysInternals的ZoomIt实用程序仔细检查是否获得了ClearType消除锯齿功能。放大时,您应该能够看到沿着字体轮廓绘制的红色和蓝色条纹。
答案 1 :(得分:0)
如果以后不打印,可以使用TextRenderer使用GDI文本渲染。其他明智的做法是使用DrawText方法将类似的类作为参数,并在每次调用时设置渲染提示
TextRenderer.DrawText( e.Graphics,
"Text",
font,
textRect,
ForeColor,
BackColor
);