在C#应用程序编程中有许多界面控件供我们使用,这些控件的形状都是规则的矩形,但是为了美观友好的UI体验,有时我们需要创建一些不规则的自定义形状的控件。
同样在C#中,类型Region是描述控件显示区域的类,类型GraphicsPath则表示一系列相互连接的直线和曲线,通过构造出闭合的不规则的GraphicsPath曲线来创建对应形状区域的Region对象,并设置控件的显示区域为此Region对象,就可以使控件按照GraphicsPath对象描述的形状来显示。
下面示例创建一个中间镂空的圆环控件(当然我们也可以添加其他任何形状的边界到GraphicsPath对象中,从而创建形状更加复杂的自定义控件):
二、在窗体Form的构造函数中添加如下代码:
// 创建用户控件 UserControl userControl = new UserControl(); // 设置用户控件大小 userControl.Width = 200; userControl.Height = 200; // 设置用户控件在父控件中居中显示 userControl.Location = new Point((this.ClientSize.Width - userControl.Width) / 2, (this.ClientSize.Height - userControl.Height) / 2); // 设置用户控件背景色为红色 userControl.BackColor = Color.Red; // 创建GraphicsPath对象 GraphicsPath graphicsPath = new GraphicsPath(); // 定义外部圆形区域 Rectangle outBounds = new Rectangle(0, 0, 200, 200); // 定义内部圆形区域 Rectangle inBounds = new Rectangle(50, 50, 100, 100); // 添加内外圆形区域到GraphicsPath对象中 graphicsPath.AddEllipse(outBounds); graphicsPath.AddEllipse(inBounds); // 设置用户控件Region对象 userControl.Region = new Region(graphicsPath); // 将用户控件添加到窗体中 this.Controls.Add(userControl);
三、运行窗体Form,其中红色的圆环控件就是我们创建的自定义形状的控件:
更多信息请参阅:GraphicsPath 类 (System.Drawing.Drawing2D)、Region 类 (System.Drawing)