Graphics
개체의 SmoothingMode
을 설정합니다. Region
을 변경하는 대신 OnPaintBackground
을 재정의하십시오. 영역은 앤티 앨리어싱을 지원하지 않습니다. 이 예에서는 Label
에서 파생시켜 사용자 지정된 레이블을 만듭니다. 당신이 ClientRectangle
동일한 페인트 사각형의 크기를 설정하면
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 픽셀 줄입니다.
코드 또는 속성 창에서 레이블의 BackColor
속성을 설정하여 원하는 타원 배경색을 설정합니다.
결과 :
코드를 컴파일하면
, 사용자 정의 라벨은 자동으로 현재 프로젝트의 Toolbox
에 나타납니다.
지역은 앤티 앨리어싱을 지원하지 않습니다. Label은 부모의 Paint 이벤트에 코드를 추가하는 것을 피할 수있는 매우 비싼 방법이라는 것을 명심하십시오. –