Graphics
オブジェクトのSmoothingMode
を設定します。 Region
を変更する代わりにOnPaintBackground
を上書きしてください。リージョンはアンチエイリアスをサポートしていません。この例では、カスタマイズしたラベルを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);
}
}
}
ペイント矩形のサイズをに設定すると、楕円は1ピクセル右と下にクリップされます。したがって、私はそのサイズを1ピクセル小さくします。
コードまたはプロパティウィンドウでラベルのBackColor
プロパティを設定して、楕円の背景色を設定します。
結果:あなたは、コードをコンパイルしたら
、カスタマイズされたラベルが自動的に現在のプロジェクトにToolbox
に表示されます。
リージョンは、アンチエイリアスをサポートしていません。ラベルは親のPaintイベントにコードを追加することを避けるために非常に高価な方法であることを覚えておいてください。 –