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

从VB 6到VB.NET——窗体特殊应用

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

从VB 6到VB.NET——窗体特殊应用

李洪根

一、   摘要

    VB .NET做为VB6的升级版本,具备了许多新的功能,它可以简便快捷地创建 .NET 应用程序(包括 XML Web services 和 ASP.NET Web 应用程序),还是一个功能强大的面向对象的编程语言(如继承、接口和重载)。新的语言功能包括自由线程处理和结构化异常处理。VB.NET 还完全集成了.NET 框架和公共语言运行库,.NET 框架和公共语言运行库共同提供语言互操作性、垃圾回收、增强的安全性和改进的版本支持。可以说是一个划时代的产品!

从VB6到VB.NET的开发过程中,窗体应用始终是一个永恒的话题。任何一个WINDOWS的应用程序,都与窗体密切相关,在许多场合,我们都需要对窗体进行一些特殊的设置或操作,本文用VB6和VB.NET相结合,来说明窗体应用的特殊问题及处理,以及VB.NET给我们带来的新的功能!

 

二、正文

1、             创建特殊形状的窗体

我们还是来看一下在VB6中的实现,VB6中实现(借助API函数)

做一个古怪的窗口必须要用的也是此程序中最重要的一个函数就是SetWindowRgn

它的功能就是对指定的窗口进行重画,把这个窗口你选择的部分留下其余的部分抹掉

参数:hWnd:你所要重画的窗口的句柄,比如你想重画form1则应该让此参数为form1.hWnd

     hRgn:你要保留的区域的句柄,这个句柄是关键,你需要通过别的渠道来获得

在这里的区域是由Combinergn合成的新区域

     bRedram:是否要马上重画,一般设为true

函数CombineRgn将两个区域组合为一个新区域

函数Createrectrgn为创建一个由点X1,Y1和X2,Y2描述的矩形区域

函数CreateEllipticRgn为创建一个X1,Y1和X2,Y2的椭圆区域

用DeleteObject这个函数可删除GDI对象,比如画笔、刷子、字体、位图、区域以及调色板等等。对象使用的所有系统资源都会被释放

 

以下是VB6的代码:

    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 CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

    Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

    Private Const RGN_DIFF = 4

 

    Private Sub Form_Load()

        Dim rgn As Long

        Dim rgnRect As Long

        Dim rgnDest As Long

 

        rgn = CreateEllipticRgn(0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)

        rgnRect = CreateRectRgn((Me.Width / Screen.TwipsPerPixelX - 20) / 2, (Me.Height / Screen.TwipsPerPixelY - 20) / 2, (Me.Width / Screen.TwipsPerPixelX + 20) / 2, (Me.Height / Screen.TwipsPerPixelY + 20) / 2)

        rgnDest = CreateRectRgn(0, 0, 1, 1)

    CombineRgn rgnDest, rgn, rgnRect, RGN_DIFF

SetWindowRgn Me.hWnd, rgnDest, True

    Call DeleteObject(rgnRect)

    Call DeleteObject(rgnDest)

    End Sub

 

    Private Sub Command1_Click()

        End

    End Sub

 

 

在VB.NET中,我们可以使用.NET 框架类库System.Drawing.Drawing2D的GraphicsPath 类(应用程序使用路径来绘制形状的轮廓、填充形状内部和创建剪辑区域),来绘制图形,

然后通过窗体的Me.Region来设置窗口的可见区域。

 

以下是VB.NET的代码:

    ''''声明一个布尔型变量,判断窗体是否正常区域

Dim IsNormalRegion As Boolean = True

 

    Private Sub Button2_Click(ByVal sender As System.Object, _

            ByVal e As System.EventArgs) Handles Button2.Click

 

        If (IsNormalRegion) Then

            ''''构造一个GraphicsPath对象实例

            Dim Graphics As New System.Drawing.Drawing2D.GraphicsPath()

            Dim intHeight As Integer = Me.Size.Height

            Dim intWidth As Integer = Me.Size.Width

 

[1] [2] [3] [4] [5]  下一页


没有相关教程
教程录入: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……
    咸宁网络警察报警平台