如何使文字/标签流畅?

Joe*_*ani 5 c# text label smoothing winforms

有谁知道如何制作标签或文字,更顺畅?目前他们看起来很不稳定.由于我想使标签动态化,我不能只从Photoshop插入文本.

zin*_*orp 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

添加一个名为CustomLabel的新自定义控件(或任何您想要调用的自定义控件)并使用上面的代码.重建项目,然后您应该看到CustomLabel控件出现在顶部的工具箱中的"MyProject Components"类别下.在此自定义标签的属性窗格中,您将看到新的TextRenderingHint属性.将此设置为"AntiAlias".在表单中添加另一个标签并比较它们的外观.

如果要将其默认为AntiAlias,只需更改私有变量的默认值即可.


And*_*and 5

你指的是ClearType吗?然后必须在Windows中启用ClearType,并且必须使用现代字体,例如Tahoma或Segoe UI,而不是MS Sans Serif.

更新

您发布了问题的示例.我把它放大到400%.很明显的ClearType反锯齿像素启用.就个人而言,我不认为文字看起来像是锯齿状.如果您想要更高质量的屏幕文本,您可以购买具有更高物理分辨率(每英寸像素数)的屏幕,然后以(相应地)更大的尺寸绘制文本.然后文本将在屏幕上具有相同的大小,但看起来会更加流畅.

您也可以放弃ClearType并使用其他一些字体平滑算法,但这远非微不足道,因为ClearType是Windows上字体平滑系统.

更新2

如果您运行的是Windows 7,则可以微调ClearType.只需打开开始菜单,写下"ClearType"并启动指南.我认为Vista和XP也有指南,但默认情况下可能没有安装,但可以像PowerToys那样提供......