有谁知道如何制作标签或文字更流畅?目前他们看起来很不稳定。由于我想使标签动态化,我不能只从Photoshop插入文本。
答案 0 :(得分:15)
如果要对其进行反别名,则必须动态生成代表文本的图像。以下是msdn上的示例:http://msdn.microsoft.com/en-us/library/a619zh6z.aspx
编辑:编辑以下评论。
该链接描述了使用控件的OnPaint事件来使用不同的TextRenderingHint。如果你想要一些可以重复使用的东西你可以做的是创建一个扩展Label类的Custom 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,只需更改私有变量的默认值。
答案 1 :(得分:5)
您指的是ClearType吗?然后必须在Windows中启用ClearType,并且必须使用现代字体,例如Tahoma或Segoe UI,而不是MS Sans Serif。
<强>更新强>
您发布了an example问题。我magnified it to 400 %。显然,启用了ClearType子像素抗锯齿 。就个人而言,我不认为文字看起来像是锯齿状。如果您想要更高质量的屏幕文本,您可以购买具有更高物理分辨率(每英寸像素数)的屏幕,然后以(相应地)更大的尺寸绘制文本。然后文本将在屏幕上具有相同的大小,但看起来会更加流畅。
你也可以放弃ClearType并使用其他一些字体平滑算法,但这远非微不足道,因为ClearType是Windows上的 字体平滑系统。
更新2
如果您运行的是Windows 7,则可以微调ClearType。只需打开开始菜单,写下“ClearType”并启动指南。我认为Vista和XP也有指南,但默认情况下可能没有安装,但可以像PowerToys那样提供......
答案 2 :(得分:0)
确保您已启用ClearType。
答案 3 :(得分:0)
安装MacType程序,它可以像MacOS一样平滑Windows字体,我不知道为什么Microsoft不修复其Windows平滑字体? 如果Microsoft修复了其字体,则无需安装第三方应用程序,例如Windows必备的程序。