在VB中制作單獨(dú)程序封面的2種方法
發(fā)表時(shí)間:2023-08-13 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這里所謂的單獨(dú)封面,是只獨(dú)立應(yīng)用程序窗口本身的一個(gè)窗口,這個(gè)窗口在程序運(yùn)行時(shí)首先彈出屏幕,用于裝飾程序本身,或簡單的演示一下程序的優(yōu)越性。這樣的封面在很多專業(yè)的WINDOWS程序中均存在,在VB中可...
這里所謂的單獨(dú)封面,是只獨(dú)立應(yīng)用程序窗口本身的一個(gè)窗口,這個(gè)窗口在程序運(yùn)行時(shí)首先彈出屏幕,用于裝飾程序本身,或簡單的演示一下程序的優(yōu)越性。這樣的封面在很多專業(yè)的WINDOWS程序中均存在,在VB中可有兩種簡單的方法實(shí)現(xiàn)這一功能。
第一種方法:多窗體編程方法
此方法是通常采用的方法,即在程序中創(chuàng)建兩個(gè)或兩個(gè)以上的Form窗體,把其中的一個(gè)作為專門的程序封面制作場所,具體方法:
1、創(chuàng)建一個(gè)新項(xiàng)目Form1,并在此窗體內(nèi)安放Command1命令按鈕,在Command1-Click()事件中輸入結(jié)束程序代碼“END”。
2、單擊菜單的“Insert"項(xiàng)目,加入一個(gè)新窗體Form1。
3、雙擊Form1窗體空白處,在Form1-Load()事件中輸入如下代碼,用于隱藏主窗體Form1,置第二窗體為最大模式,并在運(yùn)行程序首先顯示和二窗體:
Private Sub Form-Load () ’隱藏主窗口
Form1.Visible = 0 ’窗口2最大模式
Form2.WindowState =2 ’顯示窗口2
Form2.Show
End Sub
4、 在窗體Form2中定義全程變量:
Dim strr1 As String
Dim i As Integer
5、在窗體Form2中放入一個(gè)時(shí)間控件Timer1。
6、在窗體Form2中的Form-Load ()事件中輸入以下代碼,用于在窗體2中顯示圖像,并置時(shí)間控件頻率:
Private Sub Form-Load ()
Form2.Picture = LoadPicture("c:\windows\setup.bmp")
Timer1.Interval = 10
i =0
End Sub
7、在時(shí)間控件Timer1- Timer1()事件中進(jìn)行程序封面的制作工作,演示簡單的動(dòng)畫,并控制此動(dòng)畫運(yùn)行一段時(shí)間后自動(dòng)停止,關(guān)閉程序封面,返回程序主窗口;下面的代碼實(shí)現(xiàn)在一個(gè)圖片上隨機(jī)顯示字符串,顯示30次字符串后自動(dòng)退出。
Private Sub Timer1-Timer ()
Strr1 = "程序封面演示“
With Form2
.Font.Transparent =True ’透明顯示字符
.Font.Size = Rnd *30+10 ’隨機(jī)變化字號(hào)
.Font.Italic =True ’斜體有效
.ForeColor=RGB(Rnd*256,Rnd*256,Rnd*256) ’隨機(jī)變化前景
.FontName =Screen.Fonts (Rnd*7+14) ’隨機(jī)變化字體
End With
hh=Form2.TextHehght (strr1) ’取字符串高度
ww= Form2.TextWidth (strr1) ’取字符串寬度
x=Rnd * ( Form2.ScaleWidth-ww) ’隨機(jī)改變坐標(biāo)
y=Rnd *( Form2.ScaleHeight-hh)
Form2.Current X=x
Form2.Current Y=y
Form2.Print strr1 ’顯示字符
i = i +1 ’計(jì)數(shù)
If i >30 Then
Unload Me ’關(guān)閉封面
Form1.Show ’調(diào)入主窗口
Timer1.Enabled =False ’關(guān)閉時(shí)間控件
End If
End Sub
8、為了能夠人為地控制程序封面的停留時(shí)間,可在窗體Form2鼠標(biāo)單擊事件中安放退出封面代碼:
Private Sub Form-Click ()
Unload Me
Form1.Show
Timer1.Enabled =False ’關(guān)閉時(shí)間控件
End If
End Sub
至此工作全部完成,當(dāng)運(yùn)行程序時(shí),首先彈出程序封面,封面上顯示一幅。BMP圖像,之后在此圖像上進(jìn)行隨機(jī)字符串的顯示,字符串的位置、字體、字號(hào)、前景色等值都是隨機(jī)變化的,顯示30次后自動(dòng)關(guān)閉封面返回主窗口,演示過程中用鼠標(biāo)單擊窗口也會(huì)返回主窗口,在主窗口中按下結(jié)束按鈕退出程序。具體操作時(shí)還有很多其它技巧,比如可以置第二個(gè)窗體為主窗體,這樣運(yùn)行時(shí)可自動(dòng)先彈出程序封面,可省略隱藏窗體和調(diào)入窗體的過程,另外第二窗體也可以在程序運(yùn)行時(shí)由代碼動(dòng)態(tài)生成,這樣編程時(shí)復(fù)雜一些,但有利于程序代碼的管理;程序封面的具體制作過程,有許多動(dòng)態(tài)圖像控制方法可以使用,只要靈活動(dòng)用VB的作圖方法,再加上一些必要的API函數(shù)的配合,會(huì)制作出理想的程序封面。
第二種方法:隱藏控件方法
多窗口編程存在著一定的復(fù)雜性,需要對多個(gè)窗體的·Frm文件進(jìn)行管理,編碼時(shí)還需要頻繁地在多個(gè)窗口間進(jìn)行轉(zhuǎn)換。實(shí)際上通過一個(gè)窗體也可以編制出類似的封面效果。基本原理就是在程序運(yùn)行時(shí)首先通過VISIBLE屬性隱藏全部控件,然后在主窗體內(nèi)進(jìn)行程序封面設(shè)計(jì)和演示,延時(shí)一定時(shí)間再恢復(fù)所有控件的顯示,即達(dá)到了獨(dú)立程序封面的制作過程。由于窗體內(nèi)的控件很多,逐一隱藏或顯示非常繁瑣,可采用容器控件簡化操作過程,即把控件全部放到Frame1等控件上,這樣只要執(zhí)行Frame1.Visible=0,即可使其上面的所有控件隱藏起來。
c由于程序只涉及一個(gè)窗體,程序設(shè)計(jì)的大部分工作只是編碼過程,所以不再分步介紹。在窗體Form1中安放一個(gè)時(shí)間控件Timer1 和一個(gè)容器控件Frame1,再在Frame1上安放一個(gè)命令按鈕Command1,具體程序設(shè)計(jì)時(shí)可把所有主程序工作控件放在Frame1上;之后把下面的代碼填入相應(yīng)的事件之中即可完成全部程序設(shè)計(jì)工作。運(yùn)行此程序后首先在全屏幕窗體內(nèi)顯示圖像,并從左上角開始逐漸放大字符串“程序封面演示”,放大過程中顏色發(fā)生平滑變化,形成美麗的拖尾效果,連續(xù)顯示5次后自動(dòng)關(guān)閉封面,返回主程序窗口,同樣立即關(guān)閉程序封面,返回主程序窗口,單擊主窗體中的命令按鈕退出程序。
’定義全程變量
Dim i ,j As Integer
’退出程序按鈕
Private Sub Command1-Click ()
End
End Sub
’單擊窗體關(guān)閉封面
Private Sub Form-Click ()
Frame1.Visible =1 ’恢復(fù)容器控件
timer1.Enabled =False ’關(guān)閉時(shí)間控件
Form1.WindowState =0 ’恢復(fù)缺省窗口模式
End Sub
’準(zhǔn)備工作
Private Sub Form -Load ()
Form1.WindowState =2 ’窗口最大化
Frame1.Width =Form1.Width ’調(diào)整容器控件尺寸
Frame1.Height =Form1.Height
Frame1.Top =0 ’調(diào)整容器控件位置
Frame1.Left =0
Frame1.Visible =0 ’隱藏容器控件
timer1.Interval =10 ’置時(shí)間頻率
Form1.Picture =LoadPicture ("c:\windows\setup.bmp") ’裝入圖像
Form1.ScaleMode=3 ’置坐標(biāo)刻度
Form1.FontName =“黑體” ’置字體名稱
End Sub
’封面制作 (動(dòng)畫演示)
Private Sub timer1-Timer ()
Strr ="程序封面演示"
With Form1 ’透明顯示
.Font.Transparent =True
.Font.Size = i + 1 ’放大字號(hào)
.Font.Italic =True ’斜體有效
.ForeColor=RGB(i*3,56,256-i*3) ’平滑變化顏色
End With
string =strr
Form1.Current X=i ’連續(xù)改變坐標(biāo)
Form1.Current Y=i
Form1.Print stringg ’顯示字符串
i = i +1
If i >72 Then ’放大到72號(hào)字
j =j +1 ’循環(huán)計(jì)數(shù)
i =0
Form1.Current X=72
Form1.Current Y=72
Form1.ForeColor =RGB(255,56,0) ’重新顯示一次字符
Form1.Print stringg
End If
If j =5 Then ’動(dòng)畫計(jì)數(shù)
Frame1.Visible =1 ’顯示容器控件
timer1.Enabled =False ’關(guān)閉時(shí)間控件
Form1.WindowState=0 ’恢復(fù)窗口模式
End If
End Sub