妙用VB.NET窗體實現(xiàn)背景花紋
我們每個都希望程序給我們打來強大的功能,結(jié)合我的一些經(jīng)驗和大家分析探討一下。我們在開發(fā)軟件過程中,為提高軟件的商品化程度,感覺到界面的美觀程度是一個軟件能否獲得成功的一個重要因素,我們仔細研究了一些成功的商品化軟件,從這些軟件上可以看到,程序窗口背景能顯示出非常美麗的、富有立體感的花紋。而采用VVB.NET窗體設(shè)計,若只按照系統(tǒng)提供的功能,只能從有限的幾種顏色中選擇一種顏色或采用程序繪制一些簡單的線條。而想實現(xiàn)立體感很強的紋理圖案,一般只能采用窗體的PICTURE屬性調(diào)用位圖文件,使用這種方法實現(xiàn)有許多缺點 ,其一是窗體大小受位圖大小的限制,調(diào)整起來麻煩,不具有通用性和靈活性;其二是浪費資源,因為花紋圖案基本上是重復(fù)圖案,采用與窗體同樣大小的位圖是一種浪費。
#T#下面介紹一種VB.NET窗體背景花紋實現(xiàn)的方法。在窗體上建立一個網(wǎng)格控件,設(shè)定網(wǎng)格行不可見,去掉固定行和固定列,用程序?qū)崿F(xiàn)網(wǎng)格控件與VB.NET窗體同樣大小,并隨窗體大小的改變而改變。然后設(shè)計一個花紋圖案,形成BMP位圖文件(本文程序使用文件Pict1.bmp),或者從其它圖象中截取一段圖案,也可以利用Windows系統(tǒng)提供的圖案(如c:\windows\Tiles.bmp),將其調(diào)入Picture控件。設(shè)定網(wǎng)格的每個單元與該圖案大小相同,使單元的數(shù)量正好覆蓋整個窗體背景,再將所有單元均顯示該圖案。通過子程序Backpict()實現(xiàn)以上過程,不論圖案大小、窗體大小,程序都能自動調(diào)整網(wǎng)格控件大小和網(wǎng)格單元大小及單元數(shù)量。
該程序在Visual Basic 5.0上調(diào)試成功。
1.新建窗體Form1,屬性如下:
- Caption =“背景花紋的實現(xiàn)”
- Borderstyle=3(無***、最小化按鈕)
2.建網(wǎng)格控件Grid1,它的位置和大小將在程序中設(shè)置(與Form1同樣大),屬性為:
- Enabled = False(焦點不會落在網(wǎng)格控件Grid1上)
- Fillstyle=1(改變所有單元Text特性)
- Fixedcols=0(無固定行)
- Fixedrows=0(無固定列)
- Gridlines = False(網(wǎng)格行不可見),
- Visible = True
3.建立圖象控件Picture1,程序運行時將背景花紋基本圖案放入其中,屬性為
- Visible = False(不可見)
- Autosize = True(自動調(diào)整大?。?nbsp;
4.控件中加入Sheridan 3D Controls,選取其中的三維命令按鈕SSCommand,建立兩個按鈕
- SSCommand1.Caption=“退出”
- SSCommand2.Caption=“更換背景”(演示不同的背景圖案)
它們的屬性Picture可調(diào)用與背景相同或不同的圖案,如果使用普通的命令按鈕控件Command也可,只是命令按鈕無背景圖案。
5.建立背景圖案形成子程序:
- Dim pictfile As String '位圖文件名
- Dim FILEPATH As String '文件路徑
- Sub Backpict(pictfile)
- picture1.ScaleMode = 3
- Form1.ScaleMode = 3
- picture1.Picture = LoadPicture(pictfile)
- '網(wǎng)格控件覆蓋整個窗體背景
- grid1.Top = -1
- grid1.Left = -1
- grid1.Width = Width
- grid1.Height = Height
- grid1.Cols=Int(Form1.ScaleWidth/picture1.ScaleWidth) + 1
- grid1.Rows=Int(Form1.ScaleHeight/picture1.ScaleHeight) + 1
- '所有單元大小等于基本圖案大小
- For i = 0 To grid1.Cols - 1
- For j = 0 To grid1.Rows - 1
- grid1.ColWidth(i) = picture1.ScaleWidth * 15
- grid1.RowHeight(j) = picture1.ScaleHeight * 15
- Next j
- Next I
- '選定所有單元
- grid1.SelStartCol = 0
- grid1.SelStartRow = 0
- grid1grid1.SelEndCol = grid1.Cols - 1
- grid1grid1.SelEndRow = grid1.Rows - 1
- grid1.Picture = Picture1.Picture
- End Sub
6.窗體主程序
- Private Sub Form_Load()
- Private Sub Form_Load()
- '得到運行程序路徑名,路徑名后帶反斜杠
- If Right(App.Path, 1) <> "\" Then
- filePath = App.Path & "\"
- Else
- filePath = App.Path
- End If
- '窗體初始顯示由Tiles.bmp基本圖案組成的背景
- pictfile = "c:\windows\Tiles.bmp"
- backpict (pictfile)
- End Sub
7.退出程序命令按鈕
- Private Sub SSCommand1_Click()
- End
- End Sub
8.演示不同的底紋圖案
- Private Sub SSCommand2_Click()
- '兩種背景圖案交替演示
- If pictfile = filePath & "Pict1.bmp" Then
- pictfile = "c:\windows\Tiles.bmp"
- Else
- pictfile = filePath & "Pict1.bmp"
- End If
- Backpict (pictfile)
- End Sub