版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
5.1VisualBasic圖形圖像技術(shù)5.2利用VisualBasic進(jìn)行圖像處理本章小結(jié)練習(xí)五5.1.1VB坐標(biāo)系統(tǒng)及圖形格式
1.坐標(biāo)系統(tǒng)概述圖5-1窗體的坐標(biāo)系統(tǒng)
在進(jìn)行圖形操作時(shí),都要使用繪圖區(qū)域或容器的坐標(biāo)系統(tǒng)。另外,如何用坐標(biāo)系統(tǒng)定義窗體和控件在應(yīng)用程序中的位置,也是很重要的。5.1VisualBasic圖形圖像技術(shù)在VB中,坐標(biāo)系統(tǒng)是一個(gè)二維網(wǎng)格,可定義屏幕上、窗體中或其它容器中(如圖片框)對(duì)象的位置。使用窗體中的坐標(biāo)(x,y)可定義對(duì)象在網(wǎng)格上的位置。其中:x值是沿X軸的位置,最左端的值是0;y值是沿Y軸的位置,最上端的值是0。該坐標(biāo)系統(tǒng)如圖5-1所示。
對(duì)于VisualBasic坐標(biāo)系統(tǒng),應(yīng)注意以下幾點(diǎn):
(1)當(dāng)移動(dòng)控件或調(diào)整控件的大小時(shí),使用控件容器的坐標(biāo)系統(tǒng)。如果直接在窗體上繪制對(duì)象,則窗體就是容器。如果在框架或圖片框里繪制控件,則框架或控件是容器。
(2)所有的圖形和Print方法均使用容器的坐標(biāo)系統(tǒng)。例如,那些在圖片框里繪制控件的語句,使用的是控件的坐標(biāo)系統(tǒng)。
(3)一些用來調(diào)整窗體大小或移動(dòng)窗體的語句,用緹來表示窗體的位置和大小。緹是打印機(jī)的長(zhǎng)度單位,一緹等于二十分之一磅(1440緹=1英寸;567緹=1厘米)。圖5-1窗體的坐標(biāo)系統(tǒng)
(4)當(dāng)創(chuàng)建用來調(diào)整窗體大小或移動(dòng)窗體的代碼時(shí),應(yīng)先檢查Screen對(duì)象的Height屬性和Width屬性,以確保窗體在屏幕上大小合適。
(5)屏幕左上角的坐標(biāo)總是(0,0)。任何容器的缺省坐標(biāo)系統(tǒng),都是由容器的左上角(0,0)坐標(biāo)開始的。
(6)沿這些坐標(biāo)軸定義位置的測(cè)量單位,統(tǒng)稱為刻度。在VisualBasic中,坐標(biāo)系統(tǒng)的每個(gè)軸都有自己的刻度。坐標(biāo)軸的方向、起點(diǎn)和坐標(biāo)系統(tǒng)的刻度都是可以改變的(一般情況下使用的是缺省系統(tǒng))??捎脤?duì)象的刻度屬性ScaleMode和Scale方法,設(shè)置特定對(duì)象(窗體或控件)的坐標(biāo)系統(tǒng)為缺省的刻度、標(biāo)準(zhǔn)刻度或自定義刻度。
(7)所有VisualBasic的移動(dòng)、調(diào)整大小和圖形繪制語句,根據(jù)缺省規(guī)定使用緹為單位。這些測(cè)量值指示對(duì)象打印后的大小。屏幕上的物理實(shí)際距離根據(jù)監(jiān)視器的大小變化。
2.VisualBasic的圖形格式
VisualBasic可以支持的圖形格式有位圖(?.bmp)文件、設(shè)備獨(dú)立位圖(?.dib)文件、圖標(biāo)(?.ico)文件、光標(biāo)(?.cur)文件、元(?.wmf)文件、增強(qiáng)的元(?.emf)文件、GIF(?.gif)文件以及JPEG(?.jpg)文件。表5-1列出了在VB6.0中可以使用的圖形文件格式。表5-1VB6.0可以使用的圖形文件注:存儲(chǔ)格式是指用VB6.0SavePicture存儲(chǔ)后的文件格式。5.1.2PaintPicture方法和BitBltAPI函數(shù)
PaintPicture是自VB?4.0以后新的圖形圖像處理方法,它的基本功能是圖像塊傳輸。在以前的VB版本中要產(chǎn)生塊傳輸效果時(shí),需采用WindowsAPI中的塊傳輸函數(shù)BitBlt。PaintPicture正是VB中用來代替BitBltAPI調(diào)用的簡(jiǎn)單而方便的方法。它能快速地將兩幅位圖合并;能將位圖的全部或某一部分快速剪切并粘貼到其它地方;能將位圖自動(dòng)延伸或壓縮以適應(yīng)新的環(huán)境;能在屏幕上不同位置之間、屏幕與內(nèi)存之間傳遞位圖;采用32位三元光柵操作代碼(RasterOp),在源位圖、選定的刷子位圖和目標(biāo)位圖之間進(jìn)行顏色組合,生成目標(biāo)位圖中的最終顏色,它將13個(gè)常用的RasterOp操作以內(nèi)部常量形式給出,不需任何聲明。
1.PaintPicture方法
作用:在Form、PictureBox或Printer上繪制圖形文件(?.bmp、.wmf、.emf、.cur、.ico或?.dib)的內(nèi)容。
語法:object.PaintPicturepicture,x1,y1,width1,height1,x2,y2,width2,height2,opcode
參數(shù)說明:
object:可選的,一個(gè)對(duì)象表達(dá)式,其值可以為窗體、PictureBox控件或Printer。如果省略object,則帶有焦點(diǎn)的Form對(duì)象缺省為object。
picture:必需的,要繪制到object上的圖形源。Form或PictureBox必須是Picture屬性,Picture可以為BMP、DIB、ICO、WMF、EMF等格式的圖片。
x1,y1:必需的(目標(biāo)位圖的參數(shù)),均為單精度值,指定在object上繪制Picture的目標(biāo)坐標(biāo)。object的ScaleMode屬性決定使用的度量單位。
width1:可選的(目標(biāo)位圖的參數(shù)),單精度值,指示Picture的目標(biāo)寬度。object的ScaleMode屬性決定使用的度量單位。如果目標(biāo)寬度比源寬度(width2)大或小,將適當(dāng)?shù)乩旎驂嚎sPicture。如果該參數(shù)省略,則使用源寬度。
height1:可選的(目標(biāo)位圖的參數(shù)),單精度值,指示Picture的目標(biāo)高度。object的ScaleMode屬性決定使用的度量單位。如果目標(biāo)高度比源高度(height2)大或小,將適當(dāng)?shù)乩旎驂嚎sPicture。如果該參數(shù)省略,則使用源高度。
x2,y2:可選的(源位圖的參數(shù)),均為單精度值,指示Picture內(nèi)剪貼區(qū)的坐標(biāo)(X軸和Y軸)。object的ScaleMode屬性決定使用的度量單位。如果該參數(shù)省略,則缺省為0。
width2:可選的(源位圖的參數(shù)),單精度值,指示Picture內(nèi)剪貼區(qū)的源寬度。object的ScaleMode屬性決定使用的度量單位。如果該參數(shù)省略,則使用整個(gè)源寬度。
height2:可選的(源位圖的參數(shù)),單精度值,指示Picture內(nèi)剪貼區(qū)的源高度。object的ScaleMode屬性決定使用的度量單位。如果該參數(shù)省略,則使用整個(gè)源高度。
opcode:可選的,長(zhǎng)型值或僅由位圖使用的代碼,該參數(shù)與BitBlt中dwRop參數(shù)的含義相同。它表示源圖與目標(biāo)位圖(或刷子位圖)的組合關(guān)系,用來定義在將Picture繪制到object上時(shí)對(duì)Picture執(zhí)行的位操作(例如,vbMergeCopy或vbSrcAnd操作符)。VB為opcode定義了13個(gè)內(nèi)部常量:其中,與刷子位圖有關(guān)的常量是vbMergeCopy、vbPatCopy、vbPatInvert和vbPatPaint。這13個(gè)位操作符常數(shù)的詳細(xì)含義,請(qǐng)參閱VisualBasicHelp文件中的RasterOpConstants主題。
在使用opcode時(shí)有一些限制。例如,如果資源是圖標(biāo)或圖元文件,則只能使用vbSrcCopy,而不能使用其他的opcode。
另外,opcode用于將按位操作傳遞到位圖。當(dāng)傳遞其他圖像類型時(shí),將一個(gè)值賦給該參數(shù)會(huì)造成“無效過程調(diào)用或參數(shù)”的錯(cuò)誤,這是設(shè)計(jì)的原因。為避免這個(gè)錯(cuò)誤,在操作位圖以外類型的圖像時(shí),要將opcode參數(shù)置為空。
注:通過使用負(fù)的目標(biāo)高度值(height1)和/或目標(biāo)寬度值(width1),可以水平或垂直翻轉(zhuǎn)位圖。
可以省略任何多個(gè)可選的尾部的參數(shù)。如果省略了一個(gè)或多個(gè)可選尾部參數(shù),則不能在指定的最后一個(gè)參數(shù)后面使用逗號(hào)。如果想指定某個(gè)可選參數(shù),則必須先指定語法中出現(xiàn)在該參數(shù)前面的全部參數(shù)。
巧用PaintPicture方法,結(jié)合控件屬性,可以方便地產(chǎn)生許多常見的圖像切換效果,如我們?cè)诙嗝襟w作品及電視中常見的圖像旋轉(zhuǎn)引入、翻轉(zhuǎn)、飛入、滑入、彈出、淡入淡出、隱現(xiàn)等動(dòng)畫效果。
■?PaintPicture方法實(shí)例:圖像滑入(Wipe)效果的實(shí)現(xiàn)。
在滑入效果中,新圖像逐漸覆蓋舊圖像,就像在墻上展開一幅卷成筒狀的畫。
設(shè)計(jì)步驟如下:
(1)缺省窗體Form1。
(2)按圖5-2畫出Form1。在PictureBox1中安裝源圖,程序在PictureBox2中展開PictureBox1中的圖像。各對(duì)象的主要屬性如表5-2所示。圖5-2圖像滑入效果的控件設(shè)計(jì)表5-2圖像滑入控件屬性設(shè)置(3)編程。程序代碼如下:圖5-3圖像滑入效果2.BitBltAPI函數(shù)
作用:與PaintPicture方法相同。
函數(shù)聲明:參數(shù)說明:
hDestDC:目標(biāo)設(shè)備環(huán)境。
x:目標(biāo)左上角坐標(biāo)。
y:目標(biāo)頂端坐標(biāo)。
nWidth:目標(biāo)寬。
nHeight:目標(biāo)高。
hSrcDC:源設(shè)備環(huán)境。
xSrc:源左上角坐標(biāo)。
ySrc:源頂端坐標(biāo)。
dwRop:位處理操作,與PaintPicture方法相同,如vbSrcAnd、vbSrcAnd、vbSrcCopy等。
目標(biāo)環(huán)境或源環(huán)境只能是Picture、Form或Printer對(duì)象,各單位為像素。
注意:將一個(gè)?.Bmp加載入PictureBox控件和使用WindowsAPI函數(shù)BitBlt()添加圖片的方法有一點(diǎn)不同。當(dāng)對(duì)一個(gè)圖像使用BitBlt()時(shí),PictureBox控件不能像使用LoadPicture方法那樣去調(diào)整大小,即使將ScaleWidth和ScaleHeight屬性設(shè)置為圖像的大小也不起作用。如果想在使用BitBlt之后用PictureBox調(diào)整新圖片的大小,則必須用代碼手工做,轉(zhuǎn)換單位并處理邊框。下面是解決這一問題的一個(gè)簡(jiǎn)單例子。
■?BitBltAPI函數(shù)實(shí)例:多幅畫面間切換的四種圖像特技。
在多媒體程序設(shè)計(jì)中,為了美化屏幕,增加畫面的動(dòng)感,常常要用到各種圖像顯示特技。圖像的切換技術(shù)能明顯美化畫面,用VisualBasic編制這類程序時(shí),由于VB自身沒有這種切換功能,因此需要利用第三方控件或調(diào)用WindowsAPI函數(shù)BitBlt來實(shí)現(xiàn)這種功能。下面介紹利用BitBlt函數(shù)實(shí)現(xiàn)畫面切換的四種方法(從中間逐步放大、從左到右、從右到左、柵條狀)。圖5-4圖像特技控件設(shè)計(jì)假設(shè)有四個(gè)圖像文件(Pic1.jpg~Pic4.jpg),想要讓這四幅畫自動(dòng)地循環(huán)顯示,每幅畫以某種切換方式出現(xiàn),單擊“結(jié)束”命令按鈕時(shí)退出程序。設(shè)計(jì)步驟如下:
(1)創(chuàng)建項(xiàng)目文件。新建一個(gè)工程文件“工程1”,加入一個(gè)新的模塊文件Module1及一個(gè)新的窗體Form1,并用VB畫出如圖5-4所示的窗體。
各對(duì)象的主要屬性如表5-3所示。表5-3圖像特技控件屬性設(shè)置(2)程序代碼。
Module1.bas中的內(nèi)容(聲明BitBlt函數(shù)):圖5-5多幅畫面間切換的四種圖像特技5.1.3LoadPicture函數(shù)和SavePicture語句
1.LoadPicture函數(shù)
作用:將圖形載入到窗體的Picture屬性、PictureBox控件或Image控件。
語法:LoadPicture([filename],[size],[colordepth],[x,y])
參數(shù)說明:
filename:可選項(xiàng),字符串表達(dá)式指定一個(gè)文件名,可以包括文件夾和驅(qū)動(dòng)器。如果未指定文件名,則LoadPicture清除圖像或PictureBox控件。
size:可選變體,如果filename是光標(biāo)或圖標(biāo)文件,則size指定想要的圖像大小。size的設(shè)置值為:
●?vbLPSmall0:系統(tǒng)小圖標(biāo)。
●?vbLPLarge1:系統(tǒng)大圖標(biāo),由視頻驅(qū)動(dòng)程序決定。
●?vbLPSmallShell2:外殼小圖標(biāo)大小,由“控制面板”中的DisplayProperties對(duì)話框中Appearance選項(xiàng)卡上的CaptionButtons的大小設(shè)置決定。
●?vbLPLargeShell3:外殼大圖標(biāo)大小,由“控制面板”中的DisplayProperties對(duì)話框中Appearance選項(xiàng)卡上的圖標(biāo)大小設(shè)置決定。
●?vbLPCustom4:自定義大小,由x和y參數(shù)提供。
colordepth:可選變體,如果filename是一個(gè)光標(biāo)或圖標(biāo)文件,則指定想要的顏色深度。colordepth的設(shè)置值為:
●?vbLPDefault0:如果使用指定文件,則為最佳可用匹配。
●?vbLPMonochrome:12色。
●?vbLPVGAColor:216色。
●?vbLPColor3:256色。
x:可選變體,如果使用y,則必須使用x。如果filename是一個(gè)光標(biāo)或圖標(biāo)文件,則x指定想要的寬度。在包含多個(gè)獨(dú)立圖像的文件中,如果所需大小的圖像不能得到,則使用可能的最佳匹配。只有當(dāng)colordepth設(shè)為vbLPCustom時(shí),才使用x和y值。
y:可選變體,如果使用x,則必須使用y。如果filename是一個(gè)光標(biāo)或圖標(biāo)文件,則y指定想要的高度。在包含多個(gè)獨(dú)立圖像的文件中,如果所需大小的圖像不能得到,則使用可能的最佳匹配。
注:賦值不帶參數(shù)的LoadPicture時(shí),將清除窗體、圖片框及圖像控件中的圖形。
為了加載在PictureBox控件和Image控件中顯示的圖形或加載作為窗體背景的圖形,必須將LoadPicture的返回值賦給要顯示該圖片的對(duì)象的Picture屬性。例如:
SetPicture=LoadPicture("PARTY.BMP")
SetPicture1.Picture=LoadPicture("PARTY.BMP")如果要將圖標(biāo)賦予窗體,則要把LoadPicture函數(shù)的返回值賦給Form對(duì)象的Icon屬性。例如:
SetForm1.Icon=LoadPicture(“MYICON.ICO”)
圖標(biāo)也可以被賦予除Timer控件和Menu控件外的其它控件的DragIcon屬性。例如:
SetCommand1.DragIcon=LoadPicture(“MYICON.ICO”)
使用LoadPicture可將圖形文件載入到系統(tǒng)剪貼板,如下所示:
Clipboard.SetDataLoadPicture(“PARTY.BMP”)
■?LoadPicture函數(shù)實(shí)例:本例使用LoadPicture函數(shù)將圖片加載到窗體的PictureBox控件并從控件上清除該圖片。程序運(yùn)行后,單擊窗體,即可看到所加載的圖片。
2.SavePicture語句
在用VB編制繪圖程序時(shí),有時(shí)需要將窗體或圖片框上的繪圖結(jié)果形成一個(gè)定制的圖形文件保存起來,以便以后瀏覽或修改。這一功能可以用VB本身帶有的SavePicture語句來完成。
SavePicture語句將窗體、圖像控件或圖片框中的圖形圖像保存到磁盤上的一個(gè)文件中。這些圖像可以是使用畫圖方法(Line,Circle,Pset)設(shè)計(jì)出來的,也可以存儲(chǔ)那些通過設(shè)置窗體載入的圖像,或由圖片框的圖片屬性載入的圖像,或者通過PaintPicture方法或LoadPicture函數(shù)載入的圖像。這些載入的圖像可以是BMP、JPG、ICO或WMF圖形文件。下面介紹SavePicture語句的使用。
作用:從對(duì)象或控件(如果有一個(gè)與其相關(guān))的Picture或Image屬性中將圖形保存到文件中。
語法:SavePicturepicture,stringexpression
參數(shù)說明:
picture:產(chǎn)生圖形文件的PictureBox控件或Image控件。
stringexpression:欲保存的圖形文件名。
注:無論在設(shè)計(jì)時(shí)還是運(yùn)行時(shí),圖形都是從文件加載到對(duì)象的Picture屬性,而且,如果圖形是位圖、圖標(biāo)、元文件或增強(qiáng)元文件,則圖形將以與原始文件同樣的格式保存。
Image屬性中的圖形總是以位圖的格式保存而不管其原始格式。
下面舉一個(gè)具體的例子來說明保存圖像文件的過程。
■?SavePicture語句實(shí)例:本例使用SavePicture語句保存畫在Form對(duì)象的Picture屬性中的圖形。最后有兩點(diǎn)需要指出:
(1)在使用SavePicture語句之前,必須先將窗體或圖片框的AutoRedraw屬性設(shè)為True,否則保存的將是一張空?qǐng)D。
(2)使用Image屬性保存的用畫圖命令(如Line、Circle、Pset或Print)畫出來的圖形總是以BMP文件格式保存的。但在程序設(shè)計(jì)時(shí),如果使用窗體或圖片框的Picture屬性載入或在程序運(yùn)行時(shí)通過LoadPicture函數(shù)載入的圖像,使用SavePicture語句存儲(chǔ)時(shí),存儲(chǔ)的文件格式同其載入前的文件格式一樣(如ICO格式等)。5.1.4PSet、Circle、Line繪圖方法
除了圖形控件(Line控件、Shape控件)之外,VisualBasic還提供有創(chuàng)建圖形的一些方法。下面總結(jié)的這些圖形方法適用于窗體和圖片框。
方法描述
Cls 清除所有圖形和Print輸出
PSet 設(shè)置各個(gè)像素的顏色
Point 返回指定點(diǎn)的顏色值
Line 畫線、矩形或填充框
Circle 畫圓、橢圓或圓弧
PaintPicture 在任意位置畫出圖形注意,Print方法也可認(rèn)為是一種圖形方法,因?yàn)樗妮敵鲆矊懺趯?duì)象上,并像PSet、Circle和Line方法一樣,也要以內(nèi)存圖像的方式進(jìn)行保存(如果AutoRedraw是打開的)。
在許多需要使用圖形控件的場(chǎng)合,圖形方法能工作得很好。例如,在圖表中創(chuàng)建網(wǎng)格線時(shí)需要用到直線控件數(shù)組,而使用Line方法時(shí)則只需少量代碼即可。當(dāng)窗體改變大小時(shí),跟蹤數(shù)組中Line控件的位置比起用Line方法簡(jiǎn)單地重新畫線要麻煩得多。
需要將可視的效果直接顯示在窗體上時(shí),如要顯示出有關(guān)對(duì)話的色條,可以為這種臨時(shí)性效果編寫幾組代碼行,而不是使用另一個(gè)控件。圖形方法提供了一些在圖形控件無效的可視效果。例如,使用圖形方法只能創(chuàng)建圓弧或畫單個(gè)像素。用這些圖形方法創(chuàng)建出的圖形,顯示在窗體上它們自己的那一層中,窗體中的這一層在所有其他控件之下。所以,需要?jiǎng)?chuàng)建在應(yīng)用程序中其他事物之下的圖形時(shí),這種方法就很好。
用圖形方法創(chuàng)建圖形是在代碼中進(jìn)行的,這就意味著必須運(yùn)行應(yīng)用程序才能看到圖形方法的結(jié)果。因而,對(duì)于創(chuàng)建界面的簡(jiǎn)單設(shè)計(jì)元素來說,圖形方法就不能代替圖形控件的作用。設(shè)計(jì)時(shí)改變圖形控件的外觀,比修改并測(cè)試圖形方法的代碼簡(jiǎn)單。以下詳細(xì)介紹PSet、Circle和Line方法。
1.PSet方法
作用:將對(duì)象上的點(diǎn)設(shè)置為指定顏色。
語法:object.PSet[Step](x,y),[color]
參數(shù)說明:
object:可選項(xiàng),對(duì)象表達(dá)式,其值為“應(yīng)用于”列表中的對(duì)象。如果object省略,則具有焦點(diǎn)的窗體作為object。
Step:可選項(xiàng),關(guān)鍵字,指定相對(duì)于由CurrentX和CurrentY屬性提供的當(dāng)前圖形位置的坐標(biāo)。
(x,y):必需的,Single(單精度浮點(diǎn)數(shù)),被設(shè)置點(diǎn)的水平(x軸)和垂直(y軸)坐標(biāo)。
color:可選的,Long(長(zhǎng)整型數(shù)),為該點(diǎn)指定的RGB顏色。如果它被省略,則使用當(dāng)前的ForeColor屬性值,可用RGB函數(shù)或QBColor函數(shù)指定顏色。
注:所畫點(diǎn)的尺寸取決于DrawWidth屬性值。當(dāng)DrawWidth為1時(shí),PSet將一個(gè)像素的點(diǎn)設(shè)置為指定顏色;當(dāng)DrawWidth大于1時(shí),點(diǎn)的中心位于指定坐標(biāo)。畫點(diǎn)的方法取決于DrawMode和DrawStyle屬性值。
執(zhí)行PSet時(shí),CurrentX和CurrentY屬性被設(shè)置為參數(shù)指定的點(diǎn)。想用PSet方法清
除單一像素,可通過設(shè)定該像素的坐標(biāo),并用BackColor屬性設(shè)置作為color參數(shù)的方法來實(shí)現(xiàn)。
■?PSet方法實(shí)例:用PSet方法在窗體上畫五彩碎紙。
2.Circle方法
作用:在對(duì)象上畫圓、橢圓或弧。
語法:object.Circle[Step](x,y),radius,[color,start,end,aspect]
參數(shù)說明:
object:可選的,對(duì)象表達(dá)式,其值為“應(yīng)用于”列表中的對(duì)象。如果object省略,則具有焦點(diǎn)的窗體作為object。
step:可選的,關(guān)鍵字,指定圓、橢圓或弧的中心,它們相對(duì)于當(dāng)前由object的CurrentX和CurrentY屬性提供的坐標(biāo)。
(x,y):必需的,Single(單精度浮點(diǎn)數(shù)),圓、橢圓或弧的中心坐標(biāo)。object的ScaleMode屬性決定了使用的度量單位。
radius:必需的,Single(單精度浮點(diǎn)數(shù)),圓、橢圓或弧的半徑。object的ScaleMode屬性決定了使用的度量單位。
color:可選的,Long(長(zhǎng)整型數(shù)),圓的輪廓的RGB顏色。如果它被省略,則使用ForeColor屬性值,可用RGB函數(shù)或QBColor函數(shù)指定顏色。
start,end:可選的,Single(單精度浮點(diǎn)數(shù)),當(dāng)弧、部分圓或橢圓畫完以后,start和end指定(以弧度為單位)弧的起點(diǎn)和終點(diǎn)位置。其范圍從?-2?pi~2pi。起點(diǎn)的缺省值是0;終點(diǎn)的缺省值是2*pi。
aspect:可選的,Single(單精度浮點(diǎn)數(shù)),圓的縱橫尺寸比。缺省值為1.0,它在任何屏幕上都產(chǎn)生一個(gè)標(biāo)準(zhǔn)圓(非橢圓)。
注:想要填充圓,則使用圓或橢圓所屬對(duì)象的FillColor和FillStyle屬性即可。只有封閉的圖形才能填充。封閉圖形包括圓、橢圓和扇形。
畫部分圓或橢圓時(shí),如果start為負(fù),則Circle畫一半徑到start,并將角度處理為正的;如果end為負(fù),則Circle畫一半徑到end,并將角度處理為正的。Circle方法總是沿逆時(shí)針(正)方向繪圖。
畫圓、橢圓或弧時(shí),線段的粗細(xì)取決于DrawWidth屬性值。在背景上畫圓的方法取決于DrawMode和DrawStyle屬性值。
畫角度為0的扇形時(shí),要畫出一條半徑(向右畫一水平線段),這時(shí)給start規(guī)定一很小的負(fù)值,不要給0。
可以省略語法中間的某個(gè)參數(shù),但不能省略分隔參數(shù)的逗號(hào)。指定的最后一個(gè)參數(shù)后面的逗號(hào)是可以省略的。
Circle執(zhí)行時(shí),CurrentX和CurrentY屬性被參數(shù)設(shè)置為中心點(diǎn)。
■?Circle方法實(shí)例:用Circle方法在窗體中央畫許多同心圓。效果如圖5-6所示。圖5-6同心圓
3.Line方法
作用:在對(duì)象上畫直線和矩形。
語法:object.Line[Step](x1,y1)[Step](x2,y2),[color],[B][F]
參數(shù)說明:
object:可選的,對(duì)象表達(dá)式,其值為“應(yīng)用于”列表中的對(duì)象。如果object省略,則具有焦點(diǎn)的窗體作為object。
step:可選的,關(guān)鍵字,指定起點(diǎn)坐標(biāo),它們相對(duì)于由CurrentX和CurrentY屬性提供的當(dāng)前圖形位置。
(x1,y1):可選的,Single(單精度浮點(diǎn)數(shù)),直線或矩形的起點(diǎn)坐標(biāo)。ScaleMode屬性決定了使用的度量單位。如果省略,則線起始于由CurrentX和CurrentY指示的位置。
step:可選的,關(guān)鍵字,指定相對(duì)于線的起點(diǎn)的終點(diǎn)坐標(biāo)。
(x2,y2):必需的,Single(單精度浮點(diǎn)數(shù)),直線或矩形的終點(diǎn)坐標(biāo)。
color:可選的,Long(長(zhǎng)整型數(shù)),畫線時(shí)用的RGB顏色。如果它被省略,則使用ForeColor屬性值??捎肦GB函數(shù)或QBColor函數(shù)指定顏色。
B:可選的,如果選擇B,則利用對(duì)角坐標(biāo)畫出矩形。
F:可選的,如果使用了B選項(xiàng),則F選項(xiàng)規(guī)定以矩形邊框的顏色填充。不能不用B而用F。如果不用F而只用B,則矩形用當(dāng)前的FillColor和FillStyle填充。FillStyle的缺省值為transparent。
注:畫連接的線時(shí),前一條線的終點(diǎn)就是后一條線的起點(diǎn)。線的寬度取決于DrawWidth屬性值。在背景上畫線和矩形的方法取決于DrawMode和DrawStyle屬性值。
執(zhí)行Line方法時(shí),CurrentX和CurrentY屬性參數(shù)被設(shè)置為終點(diǎn)。
■?繪圖方法程序?qū)嵗豪L制任意曲線的真彩色畫板。在繪圖軟件(如MicroSoftPainter、AdobePhotoShop等)中,畫板通常具有在規(guī)定區(qū)域內(nèi),以任意的顏色,繪制任意曲線及一些基本圖形(直線、矩形、圓等)的功能。下面介紹的“真彩色畫板”(見圖5-7)可以在一個(gè)畫圖區(qū)域內(nèi),以任意的顏色(16?777?216種顏色)繪制任何曲線。程序中采用前面介紹的Line繪圖方法與鼠標(biāo)的MouseDown及MouseMove事件,并使用RGB(Red,Green,Blue)函數(shù)選取畫筆顏色,實(shí)現(xiàn)具體的繪圖操作。
1)窗體中的控件說明
在“真彩色畫板”程序用戶界面中,按圖5-7的布局使用了以下17個(gè)控件:
(1)兩個(gè)圖片框(Picture1、Picture2):Picture1用作繪圖區(qū)域,即圖5-7中的大塊白色區(qū)域;Picture2用來放置窗體右上角的軟件標(biāo)志圖片。
(2)四個(gè)命令按鈕:“打開”(Command1)、“保存”
(Command2)、“清屏”(Command3)、“退出”
(Command4)。
(3)三個(gè)水平滾動(dòng)條(Hscroll1、Hscroll2、Hscroll3):分別用于設(shè)置RGB函數(shù)的三個(gè)分量Red(紅色)、Green(綠色)和Blue(藍(lán)色)的值,各分量取值范圍均為0~255,可合成256×256×256=16?777?216種顏色,即所謂的“真彩色”。
(4)七個(gè)標(biāo)簽:分別用于顯示標(biāo)題“紅色通道”(Label1r)、“綠色通道”(Label1g)、“藍(lán)色通道”(Label1b)、RGB函數(shù)返回的合成色“畫筆顏色”(Label2),以及標(biāo)題“紅色”(Label3)、“綠色”(Label4)、“藍(lán)色”(Label5)。
(5)一個(gè)幀控件(Frame1):用作繪圖區(qū)域邊框。圖5-7“真彩色畫板”用戶界面從上面圖片框Picture1的MouseMove事件過程的設(shè)計(jì)中可以看出,畫圖的過程是從按下鼠標(biāo)左鍵開始的,畫圖過程中只需移動(dòng)鼠標(biāo)指針而不必一直按住鼠標(biāo)鍵,這就大大方便了用戶的畫圖操作。要停止畫圖,只需再一次按下鼠標(biāo)左鍵。
上面介紹的“真彩色畫板”只能繪制曲線,我們可以在此基礎(chǔ)上很方便地為“真彩色畫板”添加繪制“點(diǎn)”、“直線”、“矩形”、“圓”等功能。由于本書篇幅的關(guān)系,這些功能留給讀者練習(xí)。5.2.1在圖片上平滑移動(dòng)文字
在很多電影及游戲的結(jié)尾,我們可以看到文本在圖片上平滑地卷到屏幕的上方(如電影的版權(quán)聲明等),在VB中,可以使用以下方法來實(shí)現(xiàn)此“特技”。
首先,新建一工程文件,并創(chuàng)建Form1。在Form1上放置PictureBox控件Picture1,選定背景圖片。另外,放置一Timer控件Timer1,設(shè)置Enabled屬性為True,設(shè)置Interval為100(Interval決定文本移動(dòng)速度)。5.2利用VisualBasic進(jìn)行圖像處理
然后,單擊選擇Picture1(即以它為一個(gè)容器),在PictureBox的底部放置Label控件Label1,并設(shè)置Label1的BackStyle屬性為0(透明,即控件后的背景色和任何圖片都是可見的),設(shè)置Caption為待移動(dòng)的字符串。
各對(duì)象屬性如表5-4所示。表5-4平滑移動(dòng)文字窗體控件設(shè)置用VB畫出的窗體如圖5-8所示。圖5-8平滑移動(dòng)文字窗體設(shè)計(jì)程序運(yùn)行后,我們就可以看見文字在圖形上由下向上平滑移動(dòng)。如果將程序稍加改變,就可以實(shí)現(xiàn)由上到下、由左到右或由右到左移動(dòng)的“特技”效果。5.2.2圖像的滾動(dòng)顯示和縮放
我們?cè)谥谱鞫嗝襟w程序時(shí),不可避免地要涉及圖像的顯示。盡管VB中提供的PictureBox可以顯示多種格式的圖像文件,但由于沒有提供滾動(dòng)條和縮放功能,因此在使用中多有不便。要對(duì)圖像進(jìn)行縮放顯示,通常有兩種處理辦法:一是利用第三方控件,如Windows自帶的WANG圖像控件;二是利用VB的PictureBox和滾動(dòng)條控件自行編程實(shí)現(xiàn)。采用第三方控件時(shí),功能較強(qiáng),程序編制也簡(jiǎn)單一些,但存在一些其他問題,比如WANG圖像編輯控件在使用中經(jīng)常出現(xiàn)“類沒有注冊(cè)”的錯(cuò)誤,這將降低軟件的通用性。所以,在要求的功能不是很多的情況下,用第二種方法比較合適。下面我們就介紹如何利用VB的PictureBox和滾動(dòng)條控件來實(shí)現(xiàn)圖像的滾動(dòng)和縮放。
程序中使用了兩個(gè)圖片框(picture1、picture2),picture1作為包容器,picture2作為子圖片框來顯示圖形,配合滾動(dòng)條控件在包容器內(nèi)移動(dòng)子圖片框就可實(shí)現(xiàn)畫面的滾動(dòng)。picture2中圖形的顯示采用前面介紹過的paintpicture方法(見5.1.2),它可以在窗體、圖片框上的任何地方繪制圖形。下面先介紹窗體的設(shè)計(jì)。
首先在窗體中放置picture1作為包容器,然后在其中放置picture2,最后在窗體中放置兩個(gè)滾動(dòng)條(一個(gè)為水平滾動(dòng)條HScroll1,另一個(gè)為垂直滾動(dòng)條VScroll1)。picture2的AutoSize屬性為True,BorderStyle屬性為0,AutoRedraw屬性為True,滾動(dòng)條的LargeChange和SmallChange屬性設(shè)為合適大小。
用VB畫出的窗體如圖5-9所示。
各對(duì)象的屬性定義如表5-5所示。圖5-9圖像的滾動(dòng)顯示窗體設(shè)計(jì)表5-5圖像滾動(dòng)顯示窗體控件屬性設(shè)置程序運(yùn)行后,可以用光標(biāo)鍵移動(dòng)畫面,也可以用拖放方式移動(dòng)畫面,還可用加減號(hào)縮放畫面。下面介紹另外一種放大和縮小圖像的簡(jiǎn)單方法:把圖像放到Image控件,設(shè)置屬性Stretch為True。這時(shí),只要改變Image的大小,圖像就可以放大和縮小。以下程序是在Image1單擊事件中將圖像縮小一倍:圖像滾動(dòng)效果如圖5-10所示。圖5-10圖像滾動(dòng)顯示效果5.2.3屏幕圖像的捕捉
為了使多媒體軟件更加直觀、生動(dòng)、簡(jiǎn)練,人們往往在多媒體軟件中加入了更多的圖像。多媒體軟件中使用的圖像主要有以下幾個(gè)來源:掃描儀輸入、數(shù)字化照相機(jī)采集、從光盤素材庫(kù)中選取、屏幕抓圖(捕捉屏幕圖像)、用專用軟件制作等。這里介紹一種獲取圖像的簡(jiǎn)捷方法,即捕捉屏幕圖像。
我們可以通過一系列WindowsAPI函數(shù)的調(diào)用,來實(shí)現(xiàn)屏幕圖像的捕捉。下面給出完整的程序及調(diào)用實(shí)例,請(qǐng)讀者認(rèn)真閱讀程序中的注釋。
首先用VB畫出如圖5-11所示的窗體。其中包含一個(gè)Button控件和一個(gè)PictureBox控件。圖5-11捕捉屏幕圖像的控件設(shè)計(jì)
程序運(yùn)行后,單擊“捕捉”命令按鈕后,將捕捉以(0,0)為坐標(biāo)、320×240大小的屏幕圖像,并放到Picture1中(見圖5-12)。圖5-12程序運(yùn)行后的捕捉結(jié)果5.2.4圖像的濾鏡效果
圖像處理軟件PhotoShop最吸引人之處莫過于它的濾鏡(Filter)功能。下面介紹如何使用VB來設(shè)計(jì)圖像的濾鏡效果。
我們知道,在VB中有兩個(gè)操作像素的基本方法:PSet和Point。使用PSet方法可以生成像素;使用Point方法則可以讀取像素值,并且顯示器上所有能顯示的顏色都可用RGB值來表示。VB中提供的RGB(Red,Green,Blue)函數(shù)有三個(gè)分量:Red、Green和Blue,如RGB(255,0,0)表示紅色,RGB(255,255,0)表示黃色等,它們都代表一個(gè)長(zhǎng)整形數(shù)。
VB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版內(nèi)墻涂料產(chǎn)品生命周期評(píng)價(jià)與環(huán)保風(fēng)險(xiǎn)評(píng)估合同4篇
- 二零二五年度民商法擔(dān)保合同環(huán)保責(zé)任條款3篇
- 2025年鉆井工程地質(zhì)災(zāi)害預(yù)防合同3篇
- 二零二五年度太陽能熱水器熱水系統(tǒng)節(jié)能改造技術(shù)咨詢合同
- 二零二五年度炊事員勞動(dòng)合同(含競(jìng)業(yè)禁止)3篇
- 二零二五年度互聯(lián)網(wǎng)醫(yī)院信息化建設(shè)合同4篇
- 2025版特色農(nóng)家樂項(xiàng)目投資租賃合同范本4篇
- 二零二五年度房地產(chǎn)經(jīng)紀(jì)服務(wù)合同:房地產(chǎn)公司與經(jīng)紀(jì)公司合作3篇
- 二零二五版美容美發(fā)行業(yè)安全責(zé)任與保險(xiǎn)合同4篇
- 二零二五年度新能源技術(shù)博士引進(jìn)與項(xiàng)目合作合同4篇
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- 企業(yè)融資報(bào)告特斯拉成功案例分享
- 五年(2020-2024)高考地理真題分類匯編(全國(guó)版)專題12區(qū)域發(fā)展解析版
- 《阻燃材料與技術(shù)》課件 第8講 阻燃木質(zhì)材料
- 低空經(jīng)濟(jì)的社會(huì)接受度與倫理問題分析
- GB/T 4732.1-2024壓力容器分析設(shè)計(jì)第1部分:通用要求
- 河北省保定市競(jìng)秀區(qū)2023-2024學(xué)年七年級(jí)下學(xué)期期末生物學(xué)試題(解析版)
- 2024年江蘇省勞動(dòng)合同條例
- 六編元代文學(xué)
評(píng)論
0/150
提交評(píng)論