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


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

在以前版本的Visual Basic或Vis ual C++中,创建不规则窗体和控件是一件很复杂的事,不仅 需要调用大量API函数而且工作量也不小。不过,现在在Visu al C#下,情况就完全不同了。运用Windows Form s你就可以很轻易地创建出一个不规则的窗体以及窗体上的控件。一 个具有不规则窗体和控件的应用程序肯定会更吸引广大的用户,微软 的Windows Media Player 7就显示出这一点 。作为程序员,您一定想在自己的程序中运用这点技术吧。
程序的窗体和控件都可以以非传统 的方式被创建。本文就向大家展示如何在应用程序中创建不规则窗体 ,以及如何在窗体上创建各式各样的自定义形状的控件。
注:创建不规则窗体和控件这个过程包含了大量的图形编程工作, 所以不同的计算机因内存和显卡的不同可能会导致最终的效果有所不 同。因此,在发布你的应用程序前,务必在各种不同类型的计算机上 做好测试工作。
实现方法
首先,创建一个 位图文件作为程序的窗体。位图可以是任意形状的,但是位图文件区 域一定要足够大,这样才能包含窗体上的所有控件。然后,你可以通 过设置一些属性使该图成为程序的窗体。
把程序中的标 题栏去掉,否则整个界面将显得很不协调。当然你去掉了标题栏也就 去掉了它的最大化、最小化、关闭、移动窗体等功能。为了使程序仍 然具有这些功能,我们需在程序中添加一些代码,这样用户就仍然可 以像以前一样和程序进行交互。
因此,你需要完成如下 工作:
1.创建一个作为窗体的位图文件。
2.创建一个Windows应用程序,用上述位图文件作为程序 的窗体同时去掉其标题栏。
3.添加原标题栏具有的功 能所需的代码。
具体步骤
下面我就具体向 大家介绍如何创建不规则窗体。
创建一个具有不规则形 状的位图文件
1.用任何画图程序就可以创建不规则形 状的位图,你可以使用最容易也是最方便的画图程序。
2.用一种颜色画出一个不规则的区域作为程序的窗体,并用另一种 颜色画出该位图的背景。(你要使该不规则区域足够大。)
3.保存位图文件。
下面就是一个例子:
在VS.net中创建一个新的工程
首先,设置窗 体的背景从而建立窗体形状。
1.在窗体设计器中选中 窗体使之获得焦点。
2.在属性对话框中进行如下设置 :
● 将FormBorderStyle属性设置为 None。该属性去掉了程序的标题栏,同时也除去了标题栏的功能 ,不过我在后面还会向大家介绍如何添加代码以恢复这些功能的。< br> ● 将BackgroundImage属性设置为你创 建的位图文件。你不必在工程中添加该文件,因为你一旦指定了该文 件,它就会自动被添加到工程中。
● 将Transp arencyKey属性设置为位图文件的背景颜色值(在本例中是 蓝色)。该属性使得位图的背景即上图中的蓝色部分不可见,从而窗 体就呈现出一个不规则的椭圆形。
3. 保存工程。按 Ctrl+F5可以运行此程序。(注:因为没有标题栏,所以你可 以通过Alt+F4来关闭程序)
将FormBord erStyle属性设置为None后,程序的标题栏就被去掉了。 这样,为了获得原来标题栏的功能,我们必须手动添加代码。下面我 就向大家介绍如何添加代码实现关闭功能以及移动窗体的功能。 实现窗体的关闭及移动
1.往窗体上拖放一个 按钮控件。
2.在属性对话框中,将该控件的Text 属性设置为“关闭”。
3.双击按钮添加一个Clic k事件处理函数。
4.在代码编辑器中添加如下代码:

 

pr ivate void button1_Click(objec t sender, System.EventArgs e)< br>{
this.Close();

}< br>


5. 接下 来就是实现窗体的移动功能。添加以下代码来创建一个Point对 象,该对象(作为一个变量)决定在什么情况下移动窗体。

 

privat e Point mouse_offset;

< br>

6. 创建窗体的Mouse Down事件的事件处理函数。为该事件添加代码后,用户就可以在 任何位置移动窗体了。代码如下:

 

private void Form 1_MouseDown(object sender, Sys tem.Windows.Forms.MouseEventAr gs e)
{
mouse_offs et = new Point(-e.X, -e.Y);

}

 

7. 创建窗体的MouseMove事件的事件处理函数。当鼠标左键 被按下,同时鼠标被移动时,窗体的Location属性就被设置 为新的位置了,这样窗体就被用户拖动了。

 

private void Form1_MouseMove(object sender,
System.Windows.Forms.Mou seEventArgs e)
{
if ( e.Button == MouseButtons.Left)
{
Point mouse Pos = Control.MousePosition;
mousePos.Offset(mouse_ offset.X, mouse_offset.Y);

Location = mousePos;

}
}


< br> 8. 保存工程。按Ctrl+F5可以运行该程序。现 在程序的界面还是和以前的一样,不过你可以用鼠标移动窗体并通过 按按钮来关闭窗体了。

 

来自:域名频道 时间: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