使用ScrollBar作為輸入設備
滾動條通常與TextBox或窗口一起使用,但有時也可作輸入設備。因為ScrollBar控件可按比例指示當前位置,所以可以單獨使用以控制程序輸入,如控制聲音音量或調整圖片顏色。HScrollBar(水平)和VScrollBar(垂直)控件是獨立的,它有自己的事件、屬性和方法集。ScrollBar控件與附屬於TextBox、ListBox、ComboBox或MDI窗體的內部ScrollBar不同。(TextBox和MDI窗體具有ScrollBars屬性,可增加或刪除附屬於控件的ScrollBar。)
現在Windows界面提示行支持Slider控件作為輸入設備而不用ScrollBar。關於Slider控件的例子,請參閱Windows95的控件面板。VisualBasic的專業版和企業版中包含一個Windows95風格的Slider控件。
詳細信息關於ScrollBar控件的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。
顯示圖片和圖形的控件
因為Windows是圖形用戶界面,所以在應用程序上界面顯示圖形圖像的方法十分重要。VisualBasic包含四個控件以簡化與圖形有關的操作,它們是PictureBox控件、Image控件、Shape控件和Line控件。
Image、Shape和Line控件有時被稱作輕量圖形控件。它們需要較少的系統資源,因此比PictureBox控件顯示得快並且包含PictureBox中可用的屬性、方法和事件的子集。每一個控件都適用於一個特定的目的。
使用PictureBox控件
PictureBox控件的主要作用是為用戶顯示圖片。實際顯示圖片由Picture屬性決定。Picture屬性包括被顯示的圖片的文件名(及可選的路徑名)。
注意窗體對象也具有Picture屬性,通過設置該屬性可直接在窗體背景上顯示圖片。
要在運行時顯示或替換圖片,可利用函數LoadPicture來設置Picture屬性。提供圖片文件名和可選路徑名,由LoadPicture函數處理加載和顯示圖片的細節。
picMain.Picture=LoadPicture("VANGOGH.BMP")
PictureBox控件具有AutoSize屬性,當該屬性設置為True時,PictureBox能自動調整大小與顯示的圖片匹配。如果要用AutoSize屬性設置為True的PictureBox,設計窗體時就需要特別小心。圖片將不考慮窗體上的其它控件而調整大小,這可能導致意想不到的後果,如覆蓋其它控件。設計時應通過加載每一幅圖片來檢查是否有這種現象發生。
使用PictureBox作為容器
Picturebox控件也可以用作其它控件的容器。像Frame控件一樣,可以在PictureBox控件上面加上其它控件。這些控件隨PictureBox移動而移動,其Top和Left屬性是相對PictureBox而言,而與窗體無關。
PictureBox容器的一種普通用法是ToolBar或StatusBar。可將Image控件置於這些容器中作為按鈕或添加Label顯示狀態信息。將Align屬性設置為Top、Bottom、Left或Right,PictureBox將粘貼在窗體的邊緣。圖3.16為一個Align屬性設置為Bottom的PictureBox。它包含兩個可用於顯示狀態信息的Label控件。
PictureBox的其它用法
PictureBox控件有幾種方法使PictureBox可用於其它目的。例如:把PictureBox看作是一塊空畫布,可以在它上面畫畫或打印,或者顯示文本、圖形,甚至是簡單的動畫。
Print方法允許向PictureBox控件輸出文本,如同向打印機輸出一樣。有幾種字體屬性可以控制由Print方法輸入的文本的特性;Cls方法可以清除輸出。
Circle、Line、Point和Pset方法可以用於在PictureBox中畫圖形。一些屬性如DrawWidth、FillColor和FillStyle允許自定義圖形的外觀。
用PaintPicture方法在圖片控件內移動Image、並在幾幅不同的Image間
快速變化就能產生動畫。
詳細信息關於PictureBox控件的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。
輕量圖形控件
Image、Shape和Line控件都被認為是輕量圖形控件,也就是說,它們只支持PictureBox的屬性、方法和事件的一個子集。因此,它們需要較少的系統資源而且加載也比PictureBox控件更快。
用Image控件代替PictureBox
Image控件與PictureBox控件相似,但它只用於顯示圖片。它不能作為其它控件的容器,也不支持PictureBox的高級方法。 圖片加載於Image控件的方法和它們加載於PictureBox中的方法一樣。設計時,將Picture屬性設置為文件名和路徑,運行時,利用Loadpicture函數。
Image控件調整大小的行為與PictureBox不同。它具有Stretch屬性,而PictureBox具有AutoSize屬性。將AutoSize屬性設為True可使PictureBox根據圖片調整大小,設為False則圖片將被剪切(只有一部分圖片可見)。Stretch屬性設為False(缺省值)時,Image控件可根據圖片調整大小。將Stretch屬性設為True將根據Image控件的大小來調整圖
片的大小,這可能使圖片變形。
詳細信息關於Image控件的詳細信息,請參閱第七章“使用VisualBasic's的標准控件”。
使用Image控件創建自己的按鈕
Image控件也可以識別Click事件,因此可在要用CommandButton的任何地方使用該控件。這種方法可以方便地建立有圖片的按鈕來取代標題。將幾個Image控件組成一組,水平置於屏幕頂端(通常在一個PictureBox中),可以在應用程序中建立一個ToolBar。
例如,對TestButtons一例給出的Image控件,用戶可以像選擇CommandButton一樣來選擇它。窗體第一次被顯示時,控件顯示VisualBasic的圖標庫中三個交通圖標中的一個。每單擊Image控件一次,就顯示一個不同的圖標(該例的工作版本,請參閱Controls.vbp示例應用程序中的Button.frm)。
如果設計時觀察一下窗體,就會發現它實際包含所有三個圖標,它們堆集在一起。改變頂部Image控件的Visible屬性為False,下一幅圖像(如果其Visible屬性為真)將顯示於頂部。
圖3.17為一個交通圖標的Image控件(Trffc10a.ico)。
要在Image控件的周圍建立一個邊框,將BorderStyle屬性設為1——固定的單邊框。
注意與CommandButton不同,單擊Image控件時,並不顯示它被按下的動作。也就是說除非在MouseDown事件中改變位圖,否則“按鈕”正在被按下對用戶來說是看不到的。
詳細信息關於在Image控件中顯示圖形圖像的詳細信息,請參閱第七章“使用VisualBasic的標准控件”。
使用Shape控件和Line控件
Shape和Line控件可用來在窗體表面畫圖形元素。這些控件不支持任何事件,只用於表面裝飾。
有幾種屬性可以控制Shape控件的外觀。通過設置Shape屬性,Shape控件可顯示為矩形、正方形、橢圓型、圓角矩形或圓角正方形。設置BorderColor和FillColor屬性可以改變顏色,BorderStyle、BorderWidth、FillStyle和DrawMode屬性控制如何畫圖。 Line控件與Shape控件相似,但僅用於畫線。
詳細信息關於Shape和Line控件的附加信息,請參閱第七章“使用VisualBasic的標准控件”。
Images應用程序
圖3.18所示窗體用了四個Image控件,一個Shape控件,一個PictureBox控件和一個CommandButton控件。當用戶選擇撲克牌符號時,Shape控件使該符號突出顯示,並且在PictureBox中顯示相應的描述。關於本例的工作版本,請參閱Controls.vbp示例應用程序中的Images.frm。
下表列出了應用程序中對象的屬性設置。