为标签绘制抗锯齿椭圆区域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为标签绘制抗锯齿椭圆区域相关的知识,希望对你有一定的参考价值。
我为标签绘制了一个类似椭圆的区域,但我不知道如何设置它的抗锯齿。
片段:
Rectangle circle = new Rectangle(0, 0, labelVoto.Width,labelVoto.Height);
var path = new GraphicsPath();
path.AddEllipse(circle);
labelVoto.Region = new Region(path);
这就是结果:
有谁能够帮我?
答案
设置SmoothingMode
对象的Graphics
。覆盖OnPaintBackground
而不是改变Region
。区域不支持抗锯齿。此示例通过从Label
派生自定义标签来创建。
public class EllipticLabel : Label
{
protected override void OnPaintBackground(PaintEventArgs e)
{
// This ensures that the corners of the label will have the same color as the
// container control or form. They would be black otherwise.
e.Graphics.Clear(Parent.BackColor);
// This does the trick
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
var rect = ClientRectangle;
rect.Width--;
rect.Height--;
using (var brush = new SolidBrush(BackColor)) {
e.Graphics.FillEllipse(brush, rect);
}
}
}
如果将绘制矩形大小设置为ClientRectangle
。椭圆将被右边和底部的一个像素剪裁。因此我将其大小减小了一个像素。
您可以通过在代码或属性窗口中设置标签的BackColor
属性来设置椭圆的所需背景颜色。
结果:
编译完代码后,自定义标签会自动显示在当前项目的Toolbox
中。
以上是关于为标签绘制抗锯齿椭圆区域的主要内容,如果未能解决你的问题,请参考以下文章