域名频道-专业提供域名注册,网站空间,电子邮箱,VPS主机等服务
首页 域名注册 虚拟主机 香港主机 美国主机 VPS主机 网站建设 ShopEX网店 软件开发 客户中心 购物车
域名服务,域名注册 常见问题
文章搜索


本类TOP10
·松江网页设计_松江网页制...
·上海轨道交通图-上海地图
·松江公交线路图-松江地图
·marquee连续滚动
·今天几度?-天气预报-全...
·松江新城地图-松江地图
·松江城区地图-松江地图
·HAO123邮箱登陆代码
·shopex免费模板,下...
·松江DNS服务器地址,松...
当前位置:域名频道首页 > 常见问题 > 网页制作
创建不规则窗体和控件(2)

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

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

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

步骤如 下:

●创建一个GraphicsPath 类的实例对象。
●指定好该对象的各项细节 (如大小、形状等等)。

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

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

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

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

●将Name属性设置为CustomButton。

●将BackColor属性设置为一个和窗体背景颜色 不同的颜色值。
●将其Text属性设置为 空字符串。

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

 


private void CustomButton_Paint(object sen der,
System.Windows.Forms. PaintEventArgs e)
{
/ /初始化一个GraphicsPath类的对象
S ystem.Drawing.Drawing2D.Graphi csPath myGraphicsPath = new < br>System.Drawing.Drawing2D.Gr aphicsPath();

//确定一个字符串, 该字符串就是控件的形状
string strin gText = &
quot;
Click Me!&am p;
quot;
;

//确定字符串的字体
FontFamily family = new Font Family(&
quot;
Arial&
quo t;
);

//确定字符串的风格
in t fontStyle = (int)FontStyle.B old;

//确定字符串的高度
in t emSize = 35;

//确定字符串的起 始位置,它是从控件开始计算而非窗体
PointF origin = new PointF(0, 0);

//一个StringFormat对象来确定字符串的字 间距以及对齐方式
StringFormat fo rmat = new StringFormat(String Format.GenericDefault);

//用AddString方法创建字符串
myGr aphicsPath.AddString(stringTex t, family, fontStyle, emSize, origin, format);

//将控件的R egion属性设置为上面创建的GraphicsPath对象< br> CustomButton.Region = ne w Region(myGraphicsPath);

}

 


5. 创建按钮的Click事件的事件处理函数。添加该处 理函数来改变控件的背景颜色,从而证实控件原来的那些功能没有被 削减。

 

private void CustomB utton_Click(object sender, Sys tem.EventArgs e)
{
Cu stomButton.BackColor = Color.B lanchedAlmond;

}

 


6.保存工程并运 行。


进 一步优化效果

 

以上我们运用了Graph icsPath类的实例对象来创建了自定义形状的一个按钮控件。 不过我们用的是文本字符串形式的一个形状,是否可以用三角形或是 圆形等形状呢?答案是肯定的。.Net Framework能为 我们提供一些预先定义好了的形状以供我们在程序中使用。通过运用 这些,你可以创造出几乎任意形状的控件,你还可以把它们结合起来 使用以发挥更大的功能。

下面的实例就运用了四个椭 圆,当它们被运用到控件上后,看起来就像人的眼睛,很有意思吧。

 


private void button1_Pa int(object sender,
System. Windows.Forms.PaintEventArgs e )
{
System.Drawing.Dr awing2D.GraphicsPath myGraphic sPath = new
System.Drawing .Drawing2D.GraphicsPath();

myGraphicsPath.AddEllipse(n ew Rectangle(0, 0, 125, 125));

myGraphicsPath.AddEllip se(new Rectangle(75, 75, 20, 2 0));

myGraphicsPath.AddE llipse(new Rectangle(120, 0, 1 25, 125));

myGraphicsPat h.AddEllipse(new Rectangle(145 , 75, 20, 20));

//改变按钮的背 景颜色使之能被容易辨认
button1.Back Color = Color.Chartreuse;

button1.Size = new System.Dr awing.Size(256, 256);

bu tton1.Region = new Region(myGr aphicsPath);


}

< br>

最后,你还得 搞清楚窗体类是从System.Windows.Forms.C ontrol类继承而来的。也就是说,由窗体设计器提供给你的窗 体最终还是一个控件。因此,你能用位图文件创建一个不规则的窗体 ,你还能用GraphicsPath类对象来像创建自定义形状的 控件那样创建不规则的窗体。有兴趣的读者不妨用此方法一试效果。

来自:域名频道 时间:2006-9-19 返回 常见问题 首页
关于我们 联系方式 付款事宜 招聘启事 网站地图 域名注册 虚拟主机 法律顾问

Copyright 2000-2013 域名频道(www.DNS110.com)
地址:上海市松江区新松江路1188弄37号 邮编:201620
电话:021-67820741 67820742 67820743 传真:转分机805 值班电话:021-67820743
QQ:219854 Email:support@dns110.com