




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
*第10章圖形操作10.1圖形操作基礎(chǔ)
10.2與繪圖有關(guān)的屬性
10.3圖形控件
10.4圖形方法
10.5PaintPicture方法
習(xí)題
10.1圖形操作基礎(chǔ)
10.1.1圖形的坐標(biāo)系統(tǒng)
在VB中,每個(gè)對(duì)象定位于存放它的容器內(nèi),使用的是容器的坐標(biāo)系統(tǒng),對(duì)象的Left、Top屬性指示了相對(duì)于容器左側(cè)、頂部的距離。例如,窗體處于屏幕(Screen)內(nèi),屏幕是窗體的容器。在窗體內(nèi)繪制控件,窗體就是容器。如果在圖片框內(nèi)繪制圖形或控件,該圖片框就是容器。對(duì)象位置及大小只能在容器界定的范圍內(nèi)變動(dòng)。當(dāng)移動(dòng)容器時(shí),容器內(nèi)的對(duì)象也隨著一起移動(dòng),而且與容器的相對(duì)位置保持不變。每個(gè)容器都有一個(gè)坐標(biāo)系統(tǒng)。構(gòu)成一個(gè)坐標(biāo)系統(tǒng)需要三個(gè)要素:坐標(biāo)原點(diǎn)、坐標(biāo)度量單位、坐標(biāo)軸的長度與方向。容器的ScaleLeft、ScaleTop屬性用于控制容器對(duì)象左邊和頂端的坐標(biāo),這兩個(gè)屬性值指定了該容器對(duì)象坐標(biāo)系統(tǒng)的坐標(biāo)原點(diǎn)。所有容器對(duì)象的ScaleTop、ScaleLeft值默認(rèn)為0,坐標(biāo)原點(diǎn)在容器的左上角。
容器的ScaleHeight、ScaleWidth屬性確定對(duì)象內(nèi)部垂直方向和水平方向的大小,這個(gè)數(shù)值與所用的度量單位有關(guān)。度量單位不同,ScaleHeight、ScaleWidth屬性值也不同。
屬性ScaleMode決定對(duì)象坐標(biāo)的度量單位,共有11種設(shè)置。表10-1所示為ScaleMode屬性常用的8種設(shè)置。表10-1ScaleMode常用屬性設(shè)置
ScaleMode屬性默認(rèn)時(shí)為Twip(中文譯為緹)。每英寸為1440緹,20個(gè)緹為1磅(Point)。這一度量單位規(guī)定的是對(duì)象打印時(shí)的大小,屏幕上的實(shí)際物理距離因顯示器分辨率而異,普通VGA顯示器在800?×?600模式下,最大窗體尺寸約為12?000?×?8700緹。
改變?nèi)萜鲗?duì)象的ScaleMode屬性設(shè)置,不會(huì)改變?nèi)萜鞯拇笮『退谄聊簧系奈恢?,只是改變了容器?duì)象的度量單位。VB會(huì)重新定義對(duì)象的ScaleHeight和ScaleWidth屬性,以便使它們與新刻度保持一致。
窗體的Height屬性由ScaleHeight、標(biāo)題欄高度和水平邊框高度組成;同樣,其Width屬性值由ScaleWidth和垂直邊框?qū)挾冉M成。窗體實(shí)際可用高度和寬度由ScaleHeight和ScaleWidth確定。10.1.2自定義坐標(biāo)系統(tǒng)
容器對(duì)象的默認(rèn)坐標(biāo)系統(tǒng)對(duì)繪制控件不會(huì)有什么影響,但對(duì)作圖就有較大的影響。因?yàn)槠綍r(shí)我們習(xí)慣的坐標(biāo)原點(diǎn)在中心(這是指數(shù)學(xué)上的),所以常需要對(duì)坐標(biāo)原點(diǎn)進(jìn)行重新設(shè)置。Scale方法是建立用戶坐標(biāo)系統(tǒng)最方便的方法。其語法是:
[對(duì)象.]Scale[(xLeft,yTop)-(xRight,yBottom)]
例10-1
定義一個(gè)坐標(biāo)系統(tǒng),其坐標(biāo)原點(diǎn)為(0,0),即原點(diǎn)在窗體的中央位置,如圖10-1所示。圖10-1自定義坐標(biāo)系統(tǒng)程序代碼如下:
PrivateSubForm_click()
Me.Scale(-100,100)-(100,-100)
'定義坐標(biāo)系統(tǒng)讓窗體左上角坐標(biāo)為(-100,100),右下角為(100,-100)
Line(-100,0)-(100,0)'畫橫坐標(biāo)
Line(0,100)-(0,-100)'畫縱坐標(biāo)
EndSub
代碼寫在窗體的Click事件中,運(yùn)行后,單擊窗體即可。 10.2與繪圖有關(guān)的屬性
10.2.1CurrentX和CurrentY
窗體、圖片框或打印機(jī)的CurrentX和CurrentY屬性給出了這些對(duì)象在繪圖時(shí)的當(dāng)前坐標(biāo)。這兩個(gè)屬性只能在程序中使用。當(dāng)坐標(biāo)系確定后,常用這兩個(gè)屬性來指定一個(gè)坐標(biāo)點(diǎn),然后在這個(gè)點(diǎn)上輸出內(nèi)容。當(dāng)使用Cls方法后,CurrentX和CurrentY的值為坐標(biāo)原點(diǎn),不論這個(gè)坐標(biāo)原點(diǎn)在對(duì)象中什么位置。
例10-2
用Print方法在窗體上隨機(jī)打印100個(gè)五角星“☆”。
程序代碼如下:程序運(yùn)行效果如圖10-2所示。圖10-2當(dāng)前坐標(biāo)演示效果10.2.2DrawWidth和DrawStyle
窗體、圖片框或打印機(jī)的DrawWidth屬性給出在這些對(duì)象上所畫線條的寬度或點(diǎn)的大小,DrawStyle屬性給出在這些對(duì)象上所畫線條的線型。DrawWidth以像素為單位,最小為1,默認(rèn)值也為1。DrawStyle屬性設(shè)置及意義如表10-2所示。表10-2DrawStyle屬性設(shè)置10.2.3FillStyle和FillColor
封閉圖形的填充方式由FillStyle和FillColor這兩個(gè)屬性決定。FillColor指定填充圖案的顏色,默認(rèn)與ForeColor(控件的前景色)相同。表10-3所示為FillStyle指定填充的8種圖案。表10-3FillStyle屬性設(shè)置
1.RGB函數(shù)
RGB函數(shù)通過紅、綠、藍(lán)三基色混合產(chǎn)生某種顏色,其語法為:
RGB(紅,綠,藍(lán))
2.?QBColor函數(shù)
QBColor函數(shù)采用QuickBasic所使用的16種顏色,其語法格式為:
QBColor(顏色碼)
顏色碼的取值范圍及含義見表10-4。表10-4顏色碼與顏色對(duì)應(yīng)表10.2.4AutoRedraw
AutoRedraw屬性對(duì)于使用各種圖形方法很重要。在窗體對(duì)象或圖片框中,如果AutoRedraw屬性值為True,則當(dāng)對(duì)象調(diào)整大小或被其他對(duì)象遮蓋后,原來所畫的內(nèi)容將被重新顯示出來;反之,則不會(huì)顯示出來。AutoRedraw默認(rèn)值為False。當(dāng)需要保存窗體對(duì)象或圖片框上所繪制的圖形時(shí),其AutoRedraw屬性值必須為True。
讀者可以做一個(gè)簡單的測(cè)試,在一個(gè)窗體上用Print方法輸出一些內(nèi)容,當(dāng)AutoRedraw值為False時(shí),將這個(gè)窗體最小化后再恢復(fù),窗體上的內(nèi)容全部看不見;當(dāng)AutoRedraw值為True時(shí),無論這個(gè)窗體的大小如何變化,只要恢復(fù)到原來大小,原有的內(nèi)容會(huì)全部重新顯示出來。 10.3圖形控件
10.3.1PictureBox控件
PictureBox控件在前面章節(jié)作為其他控件的容器已經(jīng)有了多次應(yīng)用,該控件主要用來顯示圖片。顯示圖片時(shí),Picture屬性設(shè)置為被顯示的圖片文件名(含路徑名)。在程序運(yùn)行時(shí)可以使用LoadPicture()函數(shù)在圖片框中裝入圖片。
PictureBox控件不提供滾動(dòng)條,也不能伸展被裝入的圖片以適應(yīng)控件尺寸,但可用PictureBox的AutoSize屬性調(diào)整PictureBox的大小以適應(yīng)圖片尺寸。當(dāng)AutoSize設(shè)置為True時(shí),PictureBox能自動(dòng)調(diào)整大小與顯示的圖片匹配;當(dāng)AutoSize設(shè)置為False時(shí),PictureBox不能改變大小,當(dāng)圖片比控件大時(shí),超過部分將被截掉。10.3.2Image控件
在窗體上使用Image控件的步驟與使用PictureBox相同,但前者比后者占用更少的內(nèi)存,速度更快。二者的區(qū)別是Image不能用作容器。
Image沒有AutoSize屬性,但有Stretch屬性。當(dāng)Stretch設(shè)置為True時(shí),加載的圖片可自動(dòng)調(diào)整大小以適應(yīng)Image的大小(有可能失真);當(dāng)Stretch設(shè)置為False時(shí),Image會(huì)自動(dòng)改變大小以適應(yīng)加載的圖片。10.3.3Line控件
Line控件可以用來畫線。Line控件的主要屬性是BorderWidth和BorderStyle,分別控制畫線的寬度和線型,運(yùn)行時(shí)的主要屬性是所畫線條的兩個(gè)端點(diǎn)坐標(biāo)(x1,y1)和(x2,y2),分別控制線條的起點(diǎn)和終點(diǎn)。
10.3.4Shape控件
Shape控件可以用來畫矩形、正方形、橢圓、圓、圓角矩形及圓角正方形。當(dāng)Shape控件放到窗體時(shí)顯示為一個(gè)矩形,通過Shape屬性可確定所需要的幾何形狀。FillStyle屬性為Shape指定填充圖案,也可用FillColor屬性為Shape著色。10.3.5圖形文件的保存
對(duì)于繪制或加載在窗體、Image和PictureBox內(nèi)的圖形,可以使用SavePicture命令把圖形以文件的形式保存到磁盤中。命令格式為:
SavePicture對(duì)象名.屬性,"文件名" 10.4圖形方法
10.4.1Line方法
Line方法用于在指定對(duì)象上畫直線或矩形。其語法格式如下:
對(duì)象.Line[Step](x1,y1)-[Step](x2,y2),[顏色],[B][F]
例10-3
用Line方法在窗體上畫出一組隨機(jī)直線,第一條線從窗體中心開始,終點(diǎn)隨機(jī)產(chǎn)生,以后每一條線均從上一條線的終點(diǎn)開始,線條顏色也隨機(jī)產(chǎn)生。
分析:本題可以先確定坐標(biāo)系統(tǒng),將窗體中心定為原點(diǎn),終點(diǎn)及線條顏色由隨機(jī)函數(shù)產(chǎn)生。為了看清楚產(chǎn)生過程,本題用計(jì)時(shí)器來定時(shí)畫線,單擊窗體則停止。
程序代碼如下:
PrivateSubForm_Click()
Timer1.Enabled=False
EndSub
PrivateSubForm_Load()
Scale(100,100)-(0,0) '設(shè)置坐標(biāo)系統(tǒng)圖10-3例10-3運(yùn)行結(jié)果10.4.2Circle方法
Circle方法用于畫圓、橢圓、圓弧和扇形。其語法格式如下:
對(duì)象.Circle[[Step](x,y),半徑[,顏色][,起始角][,終止角][,橫縱軸比率]]
例10-4
以下代碼可分別畫出圓、扇形、橢圓及圓弧。圖10-4例10-4運(yùn)行結(jié)果10.4.3Pset方法
Pset方法用于在窗體、圖片框或打印機(jī)對(duì)象上指定的位置畫點(diǎn)。其語法格式如下:
對(duì)象.Pset[Step](x,y)[,顏色]
例10-5
建立一個(gè)坐標(biāo)系并繪制函數(shù)f(x)?=?sin(x)在(-360,360)之間的圖形。
分析:先定義坐標(biāo)系,本例將坐標(biāo)原點(diǎn)定義在一個(gè)PictureBox的中心,PictureBox的左上角坐標(biāo)為(-360,1),右下角坐標(biāo)為(360,-1)。
程序代碼如下:程序運(yùn)行結(jié)果如圖10-5所示。圖10-5例10-5運(yùn)行結(jié)果10.4.4Point方法
Point方法用于返回窗體或圖片框上指定點(diǎn)的RGB顏色。其語法格式為:
對(duì)象.Point(x,y)
例10-6
用Point方法獲取一個(gè)區(qū)域的信息并用Pset方法畫在另一個(gè)區(qū)域。
分析:在一個(gè)窗體上畫出兩個(gè)圖片框,Picture2的高和寬均是Picture1的2倍,但二者的坐標(biāo)系統(tǒng)設(shè)置相同。先在Picture1中用Print輸出幾個(gè)字符,再將Picture1中各點(diǎn)顏色逐個(gè)取出,畫到Picture2中。那么,在Picture2中得到的字符長和寬均將是Picture1中字符長寬的2倍。
程序代碼如下:圖10-6例10-6運(yùn)行結(jié)果
10.5PaintPicture方法
處理圖像除了應(yīng)用Pset方法和Point方法外,還可以使用PaintPicture方法,而且后者更加方便。
Windows提供了移動(dòng)位圖塊的功能,VB通過PaintPicture方法可實(shí)現(xiàn)從一個(gè)窗體或圖片框控件中向另一個(gè)對(duì)象復(fù)制一個(gè)矩形區(qū)域的像素。
PaintPicture方法的語法如下:
目標(biāo)對(duì)象.PaintPicturepicture,x1,y1,Width1,Height1,x2,y2,Width2,Height2,Opcode10.5.1位圖的復(fù)制
如果要將圖片框1(Picture1)中的位圖按原大小復(fù)制到圖片框2(Picture2)中,命令如下:
Picture2.PaintPicturePicture1.Picture,0,0
如果僅復(fù)制其中的一部分,則指定起點(diǎn)坐標(biāo)及高度、寬度即可。當(dāng)然,坐標(biāo)系應(yīng)定義成一樣。
10.5.2位圖的翻轉(zhuǎn)
位圖的翻轉(zhuǎn)只需改變傳送源或目標(biāo)區(qū)域的定位坐標(biāo)。如果設(shè)置圖形寬度為負(fù)數(shù),則水平翻轉(zhuǎn)圖形;如果設(shè)置圖形高度為負(fù)數(shù),則上下翻轉(zhuǎn)圖形;若將寬度和高度都設(shè)為負(fù)數(shù),則兩個(gè)方向同時(shí)翻轉(zhuǎn)圖形。10.5.3位圖的縮放
只要改變目標(biāo)圖形的高度和寬度就可實(shí)現(xiàn)位圖的縮放。
例10-7
對(duì)圖片框中圖像進(jìn)行各種翻轉(zhuǎn)及縮小操作。
程序運(yùn)行界面如圖10-7所示。圖中包括2個(gè)圖片框(Picture1、Picture2)和4個(gè)命令按鈕(命令按鈕為數(shù)組,下標(biāo)從0~3,完成的功能如其標(biāo)題)。圖片框的AutoSize屬性為True,在屬性窗口中為Picture1加上圖片。圖10-7例10-7運(yùn)行界面10.5.4位圖的旋轉(zhuǎn)
要旋轉(zhuǎn)位圖需要對(duì)原始圖片按行和列的順序或按列和行的順序讀取像素點(diǎn),然后在目標(biāo)圖形區(qū)顛倒行和列的順序后復(fù)制像素點(diǎn),這需要費(fèi)一點(diǎn)時(shí)間。當(dāng)然用Pset和Point方法配合也能完成。以下程序可以將P
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 取消彩禮返還協(xié)議書
- 售賣租房合同協(xié)議書
- 變更房租合同協(xié)議書
- 持續(xù)跟進(jìn)2025年中級(jí)會(huì)計(jì)實(shí)務(wù)考試試題及答案資本
- 粉色卡通游樂園主題六一兒童節(jié)親子活動(dòng)模板
- 工程法規(guī)考試精準(zhǔn)沖刺試題及答案
- 2025年幼兒園安全知識(shí)比賽試題
- 八年級(jí)上文言文復(fù)習(xí)課件-16-《與朱元思書》知識(shí)點(diǎn)梳理+思維導(dǎo)圖+鞏固試題+對(duì)比閱讀
- 智能安防監(jiān)控系統(tǒng)中人工智能視頻分析與智能預(yù)警技術(shù)在智能小區(qū)安防的應(yīng)用可行性研究報(bào)告
- 消防電工證考試題卷子及答案
- 《企業(yè)會(huì)計(jì)準(zhǔn)則第22號(hào)-金融工具確認(rèn)和計(jì)量》應(yīng)用指南2023年
- 水和電解質(zhì)代謝(生物化學(xué)課件)
- SG-T048-結(jié)構(gòu)吊裝施工記錄
- 溫嶺市國有企業(yè)招聘考試真題2022
- 神木縣四門溝煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 2023年廣西三類人員B證繼續(xù)教育網(wǎng)絡(luò)學(xué)習(xí)試題及答案分DOC
- 人教版七年級(jí)上生命的思考珍視生命微課
- 數(shù)學(xué)手冊(cè)(高清版)
- 《安井食品采購成本管理問題研究【開題報(bào)告+文獻(xiàn)綜述+正文】》17000字
- 義務(wù)教育語文課程標(biāo)準(zhǔn)(2022)測(cè)試題帶答案(20套)
- 招聘與配置課程心得體會(huì)5篇
評(píng)論
0/150
提交評(píng)論