构造异形窗体-从入门到精通
从Windows操作系统诞生的第一天开始,所有的窗口都是矩形的。但是,打破这一戒规标新出异的软件正越来越多,即使是Microsoft这个矩形窗体的鼻祖,也开始使用不规则的异形窗体,Windows Media Player就是一个例子。可惜的是,构造异形窗体向来不是一件轻松的事情,不过现在不同了!框架特别是Windows Forms包,即使构造复杂的窗体形状也变得轻而易举。
既然已经提到Media Player,那就继续用它作为例子说明吧。Media Player运用了许多特殊的技术,足以作为典型的范例。想必大家的Windows系统上都安装了Media Player,你可以按照本文的说明马上打开试试。
本文将示范异形窗体的构造过程,这个异形窗体拥有与Meida Player相似的外形。但在说明这一复杂异形窗体的构造过程之前,首先我们要了解一些基础知识。
一、异形窗体基础
构造异形窗体的基本思路很简单,只需定义向量形式的窗体轮廓,然后把这个窗体轮廓指定给窗体。
框架类Region定义。每一个Windows的Form有一个成员对象Region,但在默认情况下,Form不会带有用户自定义的Region,其对象引用是null(C#)或Nothing(),窗体显示为矩形(Windows XP的“主题”功能会修改窗体的外观,不过本文将忽略这一细节)。
创建一个Region类的实例,填充异形窗体的形状信息,就可以修改窗体的外形。要做到这一点,最简单的办法是使用GraphicsPath对象。GraphicsPath是一个GDI+类,。GraphicsPath类能够以向量的形式描述形状,用法很简单,只需给出窗体的轮廓定义即可。定义好的向量路径提交给Region对象的构造函数,Region对象自动把路径信息转换成形状定义数据。窗体获得形状数据之后,它的形状就随之改变。
因此,要简单地改动一下窗体外形简直轻而易举。.NET的GraphicsPath类功能相当强大,部分方法可以说很复杂。不过,本文只需用到直线和弧形组合成的简单路径。
二、构造椭圆窗体
下面先来看一个椭圆窗体的简单例子。 Windows窗体工程,将创建一个默认的矩形窗体。椭圆窗体轮廓的图形路径很简单,只需调用一下GraphicsPath对象的AddEllipse()方法即可得到。GraphicsPath提供了许多方法来构造复杂的向量路径,部分将在本文后面的例子用到,但现在我们只需要一个椭圆。下面这段代码显示了如何创建路径并加入一个椭圆:
Imports
Dim oPath As New GraphicsPath()
(0, 0, 200, 100)
这段代码定义的椭圆开始位置是(0,0),也就是窗体(即绘图平面)的左上角,椭圆的大小是200 X 100。注意,为了让这段代码顺利通过编译,。所有的Windows窗体应用自动引用该名称空间,所以不必为它添加工程引用。
AddEllipse()方法有几种重载的形态,其中一种允许传入一个Rectangle对象替代矩形的坐标。如果椭圆的矩形大小和窗体大小一样,用这个方法就很方便,因为每一个Windows的窗体都有一个ClientRectangle成员:
Dim oPath As New GraphicsPath()
()
利用这个路径创建Region对象,然后再传递给窗体。下面是窗体的Load事件句柄:
Private Sub Form1_Load( ByVal sender As , _
ByVal e As ) _
Handles
Dim oPath As New GraphicsPath()
()
= New Region(oPath)
End Sub
对于C#,相似。下面是生成椭圆窗体的C#代码:
private void Form1_Load(object sender, e)
{
GraphicsPath oPath = new GraphicsPath();
(
构造异形窗体-从入门到精通 来自淘豆网m.daumloan.com转载请标明出处.