我正在做一些有很多标签的项目。我有一项任务是让标签更平滑,因为它看起来很难看。我编写了自定义LabelEx
类,扩展了Label
类。然后我覆盖了这样的OnPaint()
方法:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
}
但它不起作用。我还有旧的丑陋标签。
帮助我理解OnPaint
方法的含义。它是如何工作的?我希望我的标签具有我在myClass.cs[Design]
(位置,大小,TextAlign,字体)中设置的属性。我只需要让它们更顺畅。
答案 0 :(得分:2)
默认情况下,Label OnPaint使用GDI(System.Windows.Forms.TextRenderer),而不使用GDI +(System.Drawing.Graphics)来使用GDI +,您需要设置UseCompatibleTextRendering True并在调用base.OnPaint之前更改您的GDI +选项( E); 这是一个例子:
public class LabelEx : System.Windows.Forms.Label
{
public LabelEx()
{
UseCompatibleTextRendering = true;
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
// You can try this two options too.
//e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
//e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
base.OnPaint(e);
}
}