新建一个用户控件:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//设置控件区域
GraphicsPath path = new GraphicsPath();
path.AddPie(0, 0, this.Width, this.Height, 180, 180);
this.Region = new Region(path);
//获取画笔
using (Graphics g = this.CreateGraphics())
{
g.FillPie(Brushes.Pink, new Rectangle(0, 0, this.Width, this.Height), 180, 180);//绘制半圆
g.DrawString(Text, new Font("微软雅黑", 12, FontStyle.Regular), Brushes.Black, TextPosition);//绘制显示文本
}
}
/// <summary>
/// 公开属性,修改文本显示位置
/// </summary>
public PointF TextPosition
{
get;
set;
}
}
窗体调用代码:
this.userControl11.Text = "Hello World.";
this.userControl11.TextPosition = new PointF(this.userControl11.Width / 4, this.userControl11.Height / 4);
效果图:
类似的原理,可以定义任意形状的按钮。