窗体的透明度设置.doc_第1页
窗体的透明度设置.doc_第2页
窗体的透明度设置.doc_第3页
窗体的透明度设置.doc_第4页
窗体的透明度设置.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VB.NET编程之透明窗体篇虽然VB.NET和VB在语法上有很多相同之处,但从根本上说,VB.NET不仅仅是VB的另外一个升级版本,而是一个全新的语言。VB.NET全面支持面向对象,在VB.NET中哪怕是一个字符串,你也都可以把它看成是一个对象,一个实例,也有自己的属性和方法。同样VB.NET中程序窗体(Form)也是一个实例,它是由命名空间“System.Windows.Forms”中的“Form”类通过构造函数而成的一个实例。下面试着用VB.NET来编写与窗体相关的程序。 利用VB.NET来定制窗体的透明度在下面介绍的程序中,将通过调整TrackBar组件的数值来调整窗体的透明程度。定制透明的窗体,如果要用其他语言来实现,一定是件很复杂的工作,但对于VB.NET来说,则是一件非常简单的事情,这是因为在.Net FrameWork SDK的“Form”类中,提供了一个可以设定窗体透明度的属性“Opacity”,当“Opacity”属性值为“1”,说明窗体不透明,当“Opacity”为“0”,则窗体完全透明。 构造整个程序的主要思路就是:首先要继承一个Form对象,程序中名称为Form1,然后创建一个TrackBar组件和一个Label组件,并进行初始化,Label组件的名称为Label1,主要是显示当前窗体的透明度数值。接着定义各组件相关事件,程序中只有一个TrackBar1的“Scroll”事件,并在Form1中加入这些可视组件,这样组件才能显示出来。最后提供VB.NET的程序入口函数“Main”来运行这个程序。下面在VB.NET中通过TrackBar1来定制窗体透明度的完整程序代码(Form.vb): Imports System.Drawing Imports System.Windows.Forms Imports System.ComponentModel 继承得到一个窗体 Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 " Public Sub New ( ) MyBase.New ( ) 该调用是 Windows 窗体设计器所必需的。 InitializeComponent ( ) 在 InitializeComponent ( ) 调用之后添加任何初始化 End Sub 窗体重写处置以清理组件列表。 Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean ) If disposing Then If Not ( components Is Nothing ) Then components.Dispose ( ) End If End If MyBase.Dispose ( disposing ) End Sub 创建Windows 窗体中的各种组件 Private components As System.ComponentModel.IContainer 注意:以下过程是 Windows 窗体设计器所必需的 可以使用 Windows 窗体设计器修改此过程。 不要使用代码编辑器修改它。 Friend WithEvents TrackBar1 As System.Windows.Forms.TrackBar Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label 初始化各种组件,并定义相关的事件 Private Sub InitializeComponent ( ) Me.TrackBar1 = New System.Windows.Forms.TrackBar ( ) Me.Label1 = New System.Windows.Forms.Label ( ) Me.Label2 = New System.Windows.Forms.Label ( ) CType ( Me.TrackBar1 , System.ComponentModel. ISupportInitialize ).BeginInit ( ) Me.SuspendLayout ( ) Me.TrackBar1.Location = New System.Drawing.Point ( 12 , 48 ) Me.TrackBar1.Maximum = 100 Me.TrackBar1.Name = "TrackBar1" Me.TrackBar1.Size = New System.Drawing.Size ( 258 , 42 ) Me.TrackBar1.TabIndex = 1 Me.Label1.Location = New System.Drawing.Point ( 144 , 104 ) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size ( 66 , 24 ) Me.Label1.TabIndex = 2 Me.Label1.Text = "1" Me.Label2.Location = New System.Drawing.Point ( 62 , 104 ) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size ( 78 , 23 ) Me.Label2.TabIndex = 3 Me.Label2.Text = "透明程度:" Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 ) Me.ClientSize = New System.Drawing.Size ( 292 , 197 ) 在窗体中加入组件 Me.Controls.AddRange ( New System.Windows.Forms.Control ( ) Me.Label2 , Me.Label1 , Me.TrackBar1 ) Me.MaximizeBox = False Me.Name = "Form1" Me.Text = "VB.NET定制透明窗体" CType ( Me.TrackBar1 , System.ComponentModel.ISupportInitialize ) .EndInit ( ) Me.ResumeLayout ( False ) End Sub #End Region 事件处理 Private Sub TrackBar1_Scroll ( ByVal sender As Object , ByVal e As System.EventArgs ) Handles TrackBar1.Scroll Dim temp As Double temp = ( 100 - TrackBar1.Value ) / 100 Label1.Text = temp.ToString ( ) Me.Opacity = temp End Sub End Class 启动程序 Module Module1 Sub Main ( ) Application.Run ( new Form1 ( ) ) End sub End Module Form.vb源程序文件经过了下列命令编译后,就可以得到执行文件Form.exe,编译命令如下: Vbc /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll Form.vb 下面是Form.exe运行界面: 图01:VB.NET定制窗体透明度01 图02:VB.NET定制窗体透明度02通过上面的介绍,可以了解到如何创建窗体、组件,定义事件等,下面就在上面的这些知识之上,利用窗体的Opacity属性和定时器组件来实现一个窗体的特效窗体实现窗体的淡入淡出效果。 VB.NET实现窗体淡入淡出特效根据上面的介绍,发现通过调整窗体的Opacity属性值,就可以实现窗体的不同的透明程度。那么是否可以通过一个时间触发器来不断调整Opacity属性值,从而实现窗体淡入淡出的特效。答案是肯定的。 在.Net FrameWork SDK中提供了一个时间触发组件Timer组件,当Timer组件的Enabled属性设定为true,那么Timer组件就会每隔其Interval属性中的数值(请注意Interval属性为毫秒级),触发一下其Tick。所以在Timer组件的Tick事件中,加入修改窗体Opacity属性值的代码,就可以在Timer组件启动的时候,实现窗体的淡入淡出的特效了。 整个程序构造思路是: 首先要继承一个Form对象,程序中为名称为Form1,然后创建2个Button组件,名称为Button1和Button2,其作用是实现启动和停止定时器;一个Label组件,名称Label1,主要是显示当前窗体的透明度数值;和一个Timer组件,名称为Timer1,在程序中设定其Interval的属性值为100,也就是说,当此定时器启动的时候,每隔01.秒,触发一下其Tick事件。接着初始化组件和定义各组件的相关的事件。并在Form1中加入这些可视组件,这样组件才能显示出来,由于Timer1并非可视化组件,所以在Form1中也没有必要加入了。最后提供VB.NET的程序入口函数Main来运行这个程序。下面就是根据上述思路,通过VB.NET实现窗体淡入淡出特效的的完整程序代码(Form2.vb): Imports System.Drawing Imports System.Windows.Forms Imports System.ComponentModel 继承得到一个窗体 Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 " Public Sub New ( ) MyBase.New ( ) 该调用是 Windows 窗体设计器所必需的。 InitializeComponent ( ) 在 InitializeComponent ( ) 调用之后添加任何初始化 End Sub 窗体重写处置以清理组件列表。 Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean ) If disposing Then If Not ( components Is Nothing ) Then components.Dispose ( ) End If End If MyBase.Dispose ( disposing ) End Sub 在Windows 窗体创建组件和定义相关变量 Private components As System.ComponentModel.IContainer 注意:以下过程是 Windows 窗体设计器所必需的 可以使用 Windows 窗体设计器修改此过程。 不要使用代码编辑器修改它。 Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents Button2 As System.Windows.Forms.Button Friend WithEvents Timer1 As System.Windows.Forms.Timer Friend WithEvents Label1 As System.Windows.Forms.Label Dim temp As Integer = 100 Dim flag As Boolean = True Private Sub InitializeComponent ( ) 初始化各组件 Mponents = New System.ComponentModel.Container ( ) Me.Button1 = New System.Windows.Forms.Button ( ) Me.Button2 = New System.Windows.Forms.Button ( ) Me.Timer1 = New System.Windows.Forms.Timer ( Mponents ) Me.Label1 = New System.Windows.Forms.Label ( ) Me.SuspendLayout ( ) Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button1.Location = New System.Drawing.Point ( 86 , 64 ) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size ( 96 , 36 ) Me.Button1.TabIndex = 0 Me.Button1.Text = "启动" Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button2.Location = New System.Drawing.Point ( 86 , 116 ) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size ( 96 , 36 ) Me.Button2.TabIndex = 1 Me.Button2.Text = "停止" Me.Label1.Location = New System.Drawing.Point ( 168 , 180 ) Me.Label1.Name = "Label1" Me.Label1.TabIndex = 2 Me.Label1.Text = "Label1" Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 ) Me.ClientSize = New System.Drawing.Size ( 266 , 223 ) 在窗体中加入可视化组件 Me.Controls.AddRange ( New System.Windows.Forms.Control ( ) Me.Label1 , Me.Button2 , Me.Button1 ) Me.MaximizeBox = False Me.Name = "Form1" Me.Text = "VB.NET实现淡入淡出的窗体效果" Me.ResumeLayout ( False ) End Sub #End Region 启动定时器 Private Sub Button1_Click ( ByVal sender As Object , ByVal e As System.EventArgs ) Handles Button1.Click Timer1.Enabled = True End Sub 关闭定时器,停止窗体淡入淡出 Private Sub Button2_Click ( ByVal sender As Object , ByVal e As System.EventArgs ) Handles Button2.Click Timer1.Enabled = False End Sub 调整窗体属性,实现窗体淡入淡出特效 Private Sub Timer1_Tick ( ByVal sender As Object , ByVal e As System.EventArgs ) Handles Timer1.Tick If flag = True Then temp = temp - 1 Me.Opacity = t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论