Asp.NET Tutorials
Home > WinForm应用 > 创建不规则窗体和控件(2)

Hot archives

创建不规则窗体和控件(2)
Author:unknown From:Internet
现在,我们已经创建了一个不规则的窗体,并实现了一些基本的移动窗体、关闭窗体的功能。然而,窗体上的按钮控件还是老一套,那么方方正正,使得整个界面不美观。接下来我就向大家介绍如何创建自定义形状的控件。

前面我们创建不规则窗体的时候用到了TransparencyKey属性,但是控件是没有该属性的,所以我们得找其他的方法来实现控件的不规则形状了。在窗体上画一个自定义形状的控件时,你需要精确的告知窗体在什么位置以及如何画该控件。在.Net Framework中有相应的类和方法来帮你实现这些,所以你不必担心具体实现。

.Net Framework中的类提供给控件一个指示说明,该指示说明能确定控件被画的形状。通过不同的指示说明,你就可以按你想要的方法来画控件了。该指示说明利用了GraphicsPath这个类,这个类代表了一系列用来画图的直线和曲线。首先,你得指定一个GraphicsPath类的对象并告知它你要画什么图形。然后,你将控件的Region属性设置为上述GraphicsPath类的对象。这样,你就可以创建任何自定义形状的控件了。

步骤如下:

●创建一个GraphicsPath类的实例对象。

●指定好该对象的各项细节(如大小、形状等等)。

●将控件的Region属性设置为上面建立的GraphicsPath类的实例对象。

创建一个像文本的按钮控件:

1.拖放一个按钮控件到窗体上。

2.在属性对话框中进行如下设置:

●将Name属性设置为CustomButton。

●将BackColor属性设置为一个和窗体背景颜色不同的颜色值。

●将其Text属性设置为空字符串。

3.添加窗体的Paint事件的事件处理函数。

4.添加以下代码,用GraphicsPath类的实例对象来画控件。下面的代码以一串字符串的形式画该按钮控件,同时,程序还设置了字符串的字体、大小、风格等属性。字符串被赋给GraphicsPath类的实例对象。然后,该实例对象就被设置为按钮控件的Region属性。这样一个自定义形状的控件就完成了。


private void CustomButton_Paint(object sender, 
System.Windows.Forms.PaintEventArgs e)
{
   //初始化一个GraphicsPath类的对象
   System.Drawing.Drawing2D.GraphicsPath myGraphicsPath  = new 
System.Drawing.Drawing2D.GraphicsPath();
   //确定一个字符串,该字符串就是控件的形状
   string stringText = "Click Me!";
   //确定字符串的字体
   FontFamily family = new FontFamily("Arial");
   //确定字符串的风格
   int fontStyle = (int)FontStyle.Bold;
   //确定字符串的高度
   int emSize = 35;
   //确定字符串的起始位置,它是从控件开始计算而非窗体
   PointF origin = new PointF(0, 0);
   //一个StringFormat对象来确定字符串的字间距以及对齐方式
   StringFormat format = new StringFormat(StringFormat.GenericDefault);
   //用AddString方法创建字符串
   myGraphicsPath.AddString(stringText, family, fontStyle, emSize, origin, format);
   //将控件的Region属性设置为上面创建的GraphicsPath对象
   CustomButton.Region = new Region(myGraphicsPath);
}
Add by : Huobazi (2005-8-24:04:10)