Visual Basic程序設(shè)計(jì)導(dǎo)學(xué)06_第1頁
Visual Basic程序設(shè)計(jì)導(dǎo)學(xué)06_第2頁
Visual Basic程序設(shè)計(jì)導(dǎo)學(xué)06_第3頁
Visual Basic程序設(shè)計(jì)導(dǎo)學(xué)06_第4頁
Visual Basic程序設(shè)計(jì)導(dǎo)學(xué)06_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第6章 圖形程序設(shè)計(jì)Windows本身就具有良好的圖形用戶界面(GUI),Windows下的應(yīng)用程序的一個(gè)重要特色就是圖形處理。VB提供了非常靈活的圖形功能。不僅可以通過圖形控件進(jìn)行圖形和繪圖操作,還可以通過圖形方法在窗體或圖片框上輸出文字和圖形。本章將主要介紹有關(guān)圖形程序設(shè)計(jì)的基本知識(shí)與方法。6.1 圖形顯示與繪圖控件在VB中,進(jìn)行圖形處理主要有三種方式: 顯示已經(jīng)存在的圖形 使用繪圖控件繪制圖形 用繪圖方法繪制圖形6.1.1 顯示圖形文件圖形文件可在窗體、圖片框控件和圖像控件這三種對(duì)象上顯示。圖形文件可來自各種繪圖程序,VB支持.bmp,.dib,.ico,.cur,.wmf,.emf,.

2、jpg和.gif等格式的圖形文件。 Bitmap(位圖) 將圖像定義為點(diǎn)(像素)的圖案。位圖的文件擴(kuò)展名是.bmp或.dib,可用多種顏色深度(包括2,4,8,16,24和32位),視當(dāng)前的顯示設(shè)備而定。例如,每像素8位(256色)的位圖在每像素4位(16色)的設(shè)備上只能顯示出16種顏色。 Icon(圖標(biāo)) 是特殊類型的位圖。圖標(biāo)的最大尺寸為32像素32像素,但在 Windows 95下,圖標(biāo)也可為1616像素大小。圖標(biāo)的文件擴(kuò)展名為.ico。 Metafile(圖元文件) 將圖形定義為編碼的線段和圖形。普通圖元文件擴(kuò)展名為.wmf。增強(qiáng)型圖元文件擴(kuò)展名為.emf。 JPEG 是一種支持8位和

3、24位顏色的壓縮位圖格式。它是Internet上一種流行的文件格式。 GIF 最初是由CompuServe開發(fā)的一種壓縮位圖格式。它可支持多達(dá)256種的顏色,是Internet上一種流行的文件格式。1. 圖形顯示控件VB中的圖形顯示控件有Image控件和PictureBox控件。 Image控件Image(圖像)控件只能用于顯示已有的圖形。顯示圖形時(shí),可通過設(shè)置其Picture屬性來實(shí)現(xiàn),既可在設(shè)計(jì)時(shí)設(shè)置Picture屬性,也可在程序中通過LoadPicture()函數(shù)設(shè)置Picture屬性,還可使用剪切板對(duì)象的GetData方法設(shè)置Picture屬性。 PictureBox控件與Image不

4、同,它不但可使用各種繪圖方法畫圖和顯示已存在的圖形,也可用Print方法輸出文本,還可以放置其他的控件對(duì)象,故又有小窗體之稱。此外,在MDI(多文檔界面)窗體上,它是惟一可以直接放置在MDI主窗體上的控件,其他的控件只能放置在它上面(一般用來設(shè)計(jì)工具欄,用于放置工具按鈕圖標(biāo))。2. 圖形顯示方法在應(yīng)用程序中,可根據(jù)需要采用不同方式把圖形添加到窗體、圖片框或圖像控件中。(1)設(shè)計(jì)時(shí)添加圖形設(shè)計(jì)時(shí)添加圖形有兩種方法: 使用對(duì)象的Picture屬性。在“屬性”窗口的屬性列表中選擇Picture,VB將彈出一個(gè)對(duì)話框,從中可選擇圖形文件并把它加載到窗體上、圖片框中或圖像控件中。 使用剪貼板。把圖形從另

5、一個(gè)應(yīng)用程序(如Windows95的畫筆)復(fù)制到剪貼板上,然后返回VB環(huán)境,把它粘貼到窗體或圖片框或圖像控件中。(2)運(yùn)行時(shí)添加圖形運(yùn)行時(shí)添加圖片有三種方法:使用LoadPicture函數(shù)加載圖形文件。使用LoadPicure函數(shù)可以加載指定的圖形文件,并將該圖形賦給對(duì)象的Picture屬性。在不指定文件名時(shí)它還可用來清除窗體、圖像或圖片框中的圖形。其使用格式如下:objectname.Picture=LoadPicture(filename)其中,objectname為控件或窗體的Name屬性值。Filename為要加載的圖形文件名全稱,包括驅(qū)動(dòng)器和路徑。在任何需要的時(shí)候,都可加載一新圖形到

6、窗體上、圖片框中或圖像控件里,以更新已有的圖形。當(dāng)沒有指定filename即括號(hào)中的參數(shù)為空串()時(shí),將清除該對(duì)象所顯示的圖形。 使用Picture屬性在對(duì)象間相互復(fù)制。圖形一旦被加載或粘貼到窗體、圖片框或圖像控件以后,運(yùn)行時(shí)就可把它賦值給另一窗體、圖片框或圖像控件。例如,下列語句將把名為picDisplay圖片框中的圖形復(fù)制到名為imgDisplay的圖像控件內(nèi):imgDisplay.Picture=picDisplay.Picture 從剪貼板對(duì)象復(fù)制圖形。如果剪貼板中存儲(chǔ)有圖形數(shù)據(jù),則可使用下面的語句將剪貼板中的圖形賦給窗體、圖片框或圖形控件對(duì)象的Picture屬性:F objectna

7、me.Picture=ClipBoard.GetData(format%)提示:如果是在設(shè)計(jì)時(shí)從文件中加載或粘貼圖形,則圖形就和窗體一起被保存和加載,在創(chuàng)建.exe文件時(shí),就不必把源圖形文件提供給用戶,因?yàn)?exe文件本身包含有它的圖像。如果要在運(yùn)行時(shí)用LoadPicture函數(shù)加載圖形,則必須把源圖形文件和應(yīng)用程序一起提供給用戶?!纠?.1】 設(shè)計(jì)一個(gè)圖形瀏覽器窗體,瀏覽并顯示指定目錄下的所有圖形文件。首先創(chuàng)建一個(gè)工程文件,添加一個(gè)窗體Form1,在其上放置一個(gè)圖片框Picture1、圖像框Image1和一個(gè)文件列表框File1。在設(shè)計(jì)階段將Picture1對(duì)象的AutoSize屬性設(shè)置為T

8、rue,Appearance屬性設(shè)置為“0-Flat”,而Image1的Stretch屬性設(shè)置為True,并將File1對(duì)象的Path屬性設(shè)置為“e:media”,Pattern屬性設(shè)置為“*.bmp;*.ico;*.cur;*.jpg”并在該窗體上設(shè)計(jì)如下事件過程:Dim filepath As StringPrivate Sub File1_Click() Picture1.Picture = LoadPicture(filepath + + File1.FileName) Image1.Picture = Picture1.Picture Form1.Picture = Picture1

9、.PictureEnd SubPrivate Sub Form_Load() filepath = e:media File1.Path = filepathEnd Sub啟動(dòng)本工程,出現(xiàn)Form1窗體,在文件列表框中單擊一個(gè)圖形文件,在窗體上、右邊圖片框和圖像框中立即顯示對(duì)應(yīng)的圖形,窗體左上方和右上方的圖片框顯示是實(shí)際大小的圖形,而右下方的圖像框是拉伸后的圖形。圖6.1顯示的是HAPPY.BMP文件的圖形。 圖6.1 Form1窗體的執(zhí)行界面在File1_Click()事件過程中使用了LoadPicture()函數(shù)和Picture屬性加載用戶選擇的圖形。從加載同一幅圖形到圖片框和圖像控件的結(jié)

10、果可以看出,被加載的圖形均是從對(duì)象的左上角開始放置,窗體中和圖片框(由于其AutoSize屬性設(shè)置為True)的圖形是原始圖形文件的大小,圖像中的圖形被放大了。這是由于三種不同對(duì)象顯示圖形的過程有差異,各有自己的特點(diǎn)。(1)窗體中顯示的圖形是原始的圖形,圖形大于窗體時(shí),多余的部分被剪切掉,圖形小于窗體時(shí),窗體的其余部分無圖形可顯示。(2)圖片框的AutoSize屬性。在加載圖形的單擊事件過程中,圖片框的AutoSize屬性(邏輯數(shù)據(jù)類型)可控制圖片框是否適應(yīng)圖形的大小,以便調(diào)整。如果想讓圖片框能自動(dòng)擴(kuò)展到可容納新圖片的大小,可將該圖片框的AutoSize屬性設(shè)置為True。這樣,在運(yùn)行時(shí)加載或

11、復(fù)制圖形到圖片框時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)整其大小,使其恰好能夠顯示整個(gè)圖片,不留多余的空白區(qū)域。本例中由于將AutoSize屬性設(shè)置為True,故圖片框大小根據(jù)加載后的圖形自動(dòng)進(jìn)行了調(diào)整,與設(shè)計(jì)時(shí)的大小不一樣。(3)圖像的Stretch屬性用來控制圖形與控件誰適應(yīng)誰的問題。若將該屬性設(shè)置為True,則圖像控件大小一定,圖形大小隨圖像控件而調(diào)整。當(dāng)Stretch屬性為False時(shí),圖像控件自動(dòng)調(diào)整其大小以適應(yīng)加載圖形的要求。6.1.2 使用繪圖控件在控件對(duì)象中,線條和形狀可用于在設(shè)計(jì)時(shí)直接繪制界面所需的直線或有形狀的(矩形、圓、橢圓、圓角矩形)圖形。1. 線條控件線條控件用于在設(shè)計(jì)階段往窗體上繪制直線。

12、該控件與后面要講的Line方法不同,前者在設(shè)計(jì)階段就可看到效果,而后者只能待程序運(yùn)行后才能將繪制的直線顯示出來。線條控件的基本屬性如下: BorderCo1or屬性,設(shè)置直線的顏色,可在程序中使用顏色函數(shù)QColor()或RGB()。 BorderStyle屬性,設(shè)置直線的樣式。 BorderWidth屬性,設(shè)置直線的寬度,單位為像素。【例6.2】 設(shè)計(jì)一個(gè)窗體用線條控件在窗體上繪制一個(gè)長方體圖形,并根據(jù)用戶輸入的邊長計(jì)算該立方體的體積。2. 形狀控件形狀控件提供了一種在窗體上繪制圖形的方法,它可繪制的圖形包括矩形、圓、橢圓、圓角矩形。盡管說窗體或圖片框的Line方法、Circle方法也可用來

13、繪制矩形和圓形,但它們都是用在程序代碼中,而用形狀控件繪制的圖形是在程序設(shè)計(jì)階段都可看到的,因此,在某些情況下,用此控件可方便地改善用戶程序的應(yīng)用界面。此外,該控件還可給其他控件加上邊框等。形狀控件的一個(gè)重要的屬性是Shape,用來設(shè)置形狀控件的形狀。除與線條形狀控件相同的屬性外,下面的常用屬性用來控制繪制圖形的外觀: FillColor屬性,設(shè)置繪制圖形的填充色。 FillStyle屬性,設(shè)置繪制圖形的填充模式。在上述工程中添加窗體Form2,如圖6.2所示。窗體左邊是一個(gè)圖片框,在其中用線條控件繪制一個(gè)立方體,窗體右邊是一個(gè)框架,在其中放置4個(gè)標(biāo)簽、4個(gè)文本框和一個(gè)命令按鈕command1

14、,并在該命令按鈕上設(shè)計(jì)如下事件過程:Private Sub Command1_Click() Text4.Text = Text1.Text * Text2.Text * Text3.TextEnd Sub 圖6.2 Form2窗體設(shè)計(jì)界面將本窗體設(shè)置成啟動(dòng)對(duì)象,執(zhí)行本工程,出現(xiàn)Form2窗體的屏幕,在三條邊長文本框中分別輸入5、6和4,單擊“計(jì)算體積”命令按鈕,在體積文本框中顯示120,如圖6.3所示。圖6.3 計(jì)算體積6.2 繪 圖 方 法前面我們介紹了使用直線、形狀等控件直接繪圖,但有時(shí)我們需要在程序運(yùn)行時(shí)使用繪圖方法繪圖,這是我們本節(jié)所要討論的主要內(nèi)容。使用控件繪圖的優(yōu)點(diǎn)如下: 使用較

15、少的系統(tǒng)資源,運(yùn)行速度快。 設(shè)計(jì)階段可預(yù)覽圖形效果。 較短的代碼。 適合于窗體內(nèi)需要較少的直線與圓等情況。使用方法繪圖的優(yōu)點(diǎn)如下: 適合于窗體內(nèi)需要較多的直線或圓的情況。 各直線或圓可重疊交叉使用,用控件繪圖無法重疊。在VB中提供的繪圖方法見表6.1。表6.1 繪圖方法方法說明Cls清除所有圖形和Print輸出Pset設(shè)置各個(gè)像素的顏色Point返回指定點(diǎn)的顏色值Line畫線、矩形或填充框Circle畫圓、橢圓或圓弧PaintPicture在任意位置畫出圖形M注意:Print方法也可認(rèn)為是一種繪制圖形方法,因?yàn)樗妮敵鲆彩菍懺趯?duì)象上,并像Set,Line和Circle方法一樣,也要以內(nèi)存圖像的

16、方式進(jìn)行保存(如果AutoRedraw是打開的)。在介紹繪圖方法之前,首先看一下繪圖使用的坐標(biāo)系統(tǒng)。6.2.1 坐標(biāo)系統(tǒng)對(duì)象的坐標(biāo)系統(tǒng)是繪制各種圖形的基礎(chǔ),坐標(biāo)系統(tǒng)選擇的恰當(dāng)與否直接影響著繪圖的質(zhì)量,也就是說同樣的繪圖命令,可能僅僅由于用戶定義或選擇的坐標(biāo)系統(tǒng)的不同,而不能正確地在屏幕上顯示或在打印機(jī)上打印出結(jié)果來,或者即使能顯示或打印出來,由于比例不協(xié)調(diào),也達(dá)不到預(yù)期效果。因此,在繪制圖形前,必須首先確定坐標(biāo)系。1. 默認(rèn)坐標(biāo)系及度量單位我們知道,顯示器是以像素(分辨率)為度量單位的。常見顯示器的分辨率為640480、800600、1024768,同樣一幅圖形,由于使用的顯示器分辨率不同,所

17、顯示的效果就不同。因此在傳統(tǒng)的圖形設(shè)計(jì)中,常根據(jù)顯示器分辨率來確定繪制圖形的大小。在VB中,系統(tǒng)提供了7種標(biāo)準(zhǔn)規(guī)格的坐標(biāo)度量單位和一個(gè)由用戶自定義的度量單位。 默認(rèn)坐標(biāo)系 系統(tǒng)默認(rèn)的對(duì)象坐標(biāo)系是以對(duì)象左上角為坐標(biāo)原點(diǎn)(0,0),以twips(緹)為度量單位。需要說明的是,只能在窗體或圖片框上繪制圖形,窗體的容器是系統(tǒng)對(duì)象Screen(屏幕),而窗體對(duì)象坐標(biāo)系是用來度量其中的控件或繪制圖形時(shí)用的。 度量單位 VB中共有8種度量單位,如表6.2所列。除系統(tǒng)默認(rèn)的度量單位twips外,用戶還可根據(jù)需要,選擇系統(tǒng)提供的其他標(biāo)準(zhǔn)度量單位。度量單位設(shè)置是由對(duì)象(窗體或圖片框)的ScaleMode屬性定義的。可在屬性窗口設(shè)置或在程序代碼中讀取或修改。表6.2 VB的度量單位ScaleMode說明0用戶自定義類型。如果用戶使用ScaleWidth,ScaleHeight,ScaleTop,ScaleLeft設(shè)置坐標(biāo)系統(tǒng),VB會(huì)自動(dòng)設(shè)置ScaleMode為01twips,此為默認(rèn)值(每英寸為144twips)2磅,1英寸72個(gè)磅3像素4字符,字符的寬度=120twips,字符的高度=240twips5英寸6毫米7厘米2. 用戶定義對(duì)象坐標(biāo)系統(tǒng)在窗體和圖片框中,與繪圖有關(guān)的屬性見表6.3。表6.3 與繪圖有關(guān)的屬性屬性功能CurrentX,CurrentY設(shè)置或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論