转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB.Net创建不规则窗体         ★★★★

VB.Net创建不规则窗体

作者:闵涛 文章来源:闵涛的学习笔记 点击数:753 更新时间:2009/4/23 19:01:03

一般说来,应用程序的窗体都是规则的,即是矩形窗体。有时候为了某种特殊的用途,我们希望改变应用程序窗体的形状,比如做个个性十足的mp3播放器,小时钟等等,这就需要 "定制"我们的应用程序。另外,特殊形状的窗体有时候也能吸引用户的注意力,使得他们格外注意你的程序。

在VB6里面,我们一般通过以下代码来创建不规则窗体。
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, _ ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _ ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Sub Form_Activate()
Dim hndRgn As Long
hndRgn = CreateEllipticRgn(0, 0, 175, 175)
Call SetWindowRgn(Me.hWnd, hndRgn, True)
Call DeleteObject(hndRgn)
End Sub
首先用Win32 API CreateEllipticRgn创建一个圆形的区域,然后设置Form的区域为用户自定义的Region,这样我们就可以得到下面一个圆形的窗体

圆形窗体

为了更美观一点,我们可以设Form的BorderStyle为None,然后自己画一个TitileBar,就可以做成比较活泼的应用程序。

VB.Net里面如何实现以上效果:
VB.NET是一中跨平台的语言,更好的利用了面向对象机制。它的面向对象能力扩展了语言本身的通路:一切都是对象。这意味着比在以前的VB版本里,你获得了更多的内在功能,你将很少被迫使用 Windows API。因此在VB.Net里面我们也只好放弃VB6里面利用API的观念,用VB.Net强大的对象机制来阐述以上话题。
在VB.Net里面,Form有一个Reigin属性,我们通过创建自定义的Reigin,然后指定Form的Reigin,就可以得到不规则的窗体。而且VB.Net里面的Reigin对象功能强大,远超过了之前VB的限制,因此我们可以作出很多漂亮的界面。


Regin对象
System.Drawing的一个对象,指示由矩形和由路径构成的图形形状的内部。因为区域的坐标是在全局坐标中指定的,所以可对它进行缩放。然而,在绘制表面上,它的内部取决于表示它的像素的大小和形状。应用程序可以使用若干区域来堆砌绘图操作的输出。窗口管理器则使用区域来定义窗口的绘制区域。这些区域被称为剪辑区域。应用程序还可以在命中检测的操作中使用区域,例如检查一个点或矩形是否与某个区域相交。应用程序可通过使用 Brush 对象来填充一个区域。
GraphicsPath表示一系列相互连接的直线和曲线,应用程序使用路径来绘制形状的轮廓、填充形状内部和创建剪辑区域。图形引擎在全局坐标空间中维护路径内的几何形状的坐标。路径可由任意数目的图形(子路径)组成。每一图形都是由一系列相互连接的直线和曲线或几何形状基元构成的。图形的起始点是相互连接的一系列直线和曲线中的第一点。终结点是该序列中的最后一点。几何形状基元的起始点和终结点都是由基元规范定义的。
下面我们看两个具体的实例
1.文字格式的窗体

在Form的Load事件加入以下代码:
Dim text_path As GraphicsPath
Dim text_region As Region
Me.BackColor = Color.Red
Me.Width = 600
'''' Create the text path.
text_path = New GraphicsPath( Drawing.Drawing2D.FillMode.Alternate)
text_path.AddString("CSDN", New FontFamily("Times New Roman"), FontStyle.Bold, 200,New Point(10, 10),
StringFormat.GenericDefault)
'''' Create a Region from the path.
text_region = New Region(text_path)
'''' Constrain the form to the region.
Me.Region = text_region

运行将将得到如下形状的窗体,记住按Shift+F5 中止程序。

不规则窗体


2.椭圆形状的窗体:
同样加入以下代码,得到如下窗体

Me.Width = 300
Me.Height = 220
Me.BackColor = Color.RoyalBlue
Dim m_path As GraphicsPath
m_path = New GraphicsPath(FillMode.Winding)
m_path.AddEllipse(1, 1, 200, 200)
Dim m_region As New Region(m_path)
Me.Region = m_region

不规则窗体

以上只是两个简单的例子,通过利用Region和GraphicsPath对象,你将得到更多有趣的效果。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台