2010-04-09 89 views
4

有谁知道如何使标签或文字更平滑?目前他们看起来很棘手。由于我想让标签变为动态,所以我不能只从Photoshop插入文本。如何使文本/标签平滑?

+0

你能给我们一张照片吗?你是否启用了ClearType? – 2010-04-09 17:27:14

+0

http://d-load.org/Capture.PNG这是一个标签的图像。看看它看起来相当粗糙和粗糙吗? – 2010-04-09 17:37:51

回答

14

如果您想要反锯齿,您必须动态生成表示文字的图像。下面是msdn上的一个例子:http://msdn.microsoft.com/en-us/library/a619zh6z.aspx

编辑:编辑下面的每条评论。

该链接描述了使用控件的OnPaint事件来使用不同的TextRenderingHint。如果你想要的东西多一点的可重复使用的,你可以做的是创建一个扩展标签类的自定义标签类,并使用这个在您的形式:

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组件”类别下。在此自定义标签的属性窗格中,您将看到新的TextRenderingHint属性。将其设置为“AntiAlias”。为表单添加另一个标签并比较它们的外观。

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

+0

哦,对不起。我只是因为有人低估了你的想法而被驳回。我将如何使用它?当我尝试编译它时,我总是收到错误。 – 2010-04-09 20:34:29

+1

该链接重写OnPaint方法以将TextRenderingHint设置为AntiAlias。请参阅我上面的编辑,了解如何以可重用的方式使用此功能。 – zincorp 2010-04-09 21:16:35

+0

非常感谢!它效果很好。它看起来像这个“d-load.org/Capture.PNG”,看起来像这个“d-load.org/Capture2.PNG”,就像你的例子。不知道为什么有人低估了你......再次感谢! – 2010-04-09 21:39:12

5

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

更新

您发布的问题an example。我magnified it to 400 %。清楚地ClearType子像素抗混淆启用。就我个人而言,我不认为文字看起来很锯齿。如果您想要更高质量的屏幕文本,您可以购买具有更高物理分辨率(每英寸像素)的屏幕,然后以相应较大的尺寸绘制文本。然后文本在屏幕上的大小相同,但看起来会更平滑。

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

更新2

如果您运行的是Windows 7,你可以微调的ClearType。只需打开开始菜单,写入“ClearType”并开始指南。我认为也有Vista和XP的指南,但也许没有默认安装,但可以作为PowerToys或类似的东西...

+0

已启用。我用Tahoma和Segoe UI尝试过,但它看起来仍然很狡猾。 – 2010-04-09 17:40:16

+0

好的,谢谢。这只是其他程序不具有锯齿的文本,与我目前在ClearType上的设置。我将更改ClearType上的设置并查看它是否更好。再次感谢。 – 2010-04-09 18:15:57

+0

他启用了ClearType。问题在于,对于大字体,cleartype看起来很糟糕。为什么?因为它试图让所有东西都变得锐利,而且锐度看起来像是在24 + pt字体上混淆。 – 2010-08-27 15:32:42