有谁知道如何使标签或文本更平滑?目前,它们看起来很参差不齐。由于我想让标签动态化,我不能只从 Photoshop 中插入文本。
4 回答
如果要消除锯齿,则必须动态生成代表文本的图像。这是一个关于 msdn 的示例:http: //msdn.microsoft.com/en-us/library/a619zh6z.aspx
编辑:根据下面的评论进行编辑。
该链接描述了使用控件的 OnPaint 事件来使用不同的 TextRenderingHint。如果您想要一些更可重用的东西,您可以做的是创建一个扩展 Label 类的自定义标签类,并在您的表单中使用它:
public partial class CustomLabel : Label
{
private TextRenderingHint _hint = TextRenderingHint.SystemDefault;
public TextRenderingHint TextRenderingHint
{
get { return this._hint; }
set { this._hint = value; }
}
protected override void OnPaint(PaintEventArgs pe)
{
pe.Graphics.TextRenderingHint = TextRenderingHint;
base.OnPaint(pe);
}
}
添加一个名为 CustomLabel 的新自定义控件(或您想调用的任何名称)并使用上面的代码。重建您的项目,然后您应该会看到 CustomLabel 控件出现在顶部的“MyProject Components”类别下的工具箱中。在此自定义标签的属性窗格中,您将看到新的 TextRenderingHint 属性。将此设置为“AntiAlias”。在表单中添加另一个标签并比较它们的外观。
如果您想将其默认为 AntiAlias,只需更改私有变量的默认值即可。
你指的是 ClearType 吗?然后必须在 Windows 中启用ClearType,并且您必须使用现代字体,例如 Tahoma 或 Segoe UI,而不是 MS Sans Serif。
更新
您发布了一个问题示例。我把它放大到 400%。显然 ClearType 子像素抗锯齿已启用。就我个人而言,我不认为文本看起来参差不齐。如果您想要更高质量的屏幕文本,您可以购买具有更高物理分辨率(每英寸像素)的屏幕,然后以(相应地)更大尺寸绘制文本。然后文本将在您的屏幕上具有相同的大小,但看起来更流畅。
您也可以放弃 ClearType 并使用其他一些字体平滑算法,但这绝非易事,因为 ClearType 是Windows 上的字体平滑系统。
更新 2
如果您运行的是 Windows 7,则可以微调 ClearType。只需打开开始菜单,输入“ClearType”并启动指南。我认为也有 Vista 和 XP 的指南,但默认情况下可能没有安装,但可以作为 PowerToys 或类似的东西使用......
确保您启用了ClearType 。
安装MacType程序,它可以像MacOS一样平滑你的Windows字体,我不知道为什么微软不修复它的Windows平滑字体?如果 Microsoft 修复了它的字体,我不需要将第三方应用程序安装到诸如 Windows 基础之类的东西上。