版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(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中,每個對象定位于存放它的容器內(nèi),使用的是容器的坐標(biāo)系統(tǒng),對象的Left、Top屬性指示了相對于容器左側(cè)、頂部的距離。例如,窗體處于屏幕(Screen)內(nèi),屏幕是窗體的容器。在窗體內(nèi)繪制控件,窗體就是容器。如果在圖片框內(nèi)繪制圖形或控件,該圖片框就是容器。對象位置及大小只能在容器界定的范圍內(nèi)變動。當(dāng)移動容器時,容器內(nèi)的對象也隨著一起移動,而且與容器的相對位置保持不變。每個容器都有一個坐標(biāo)系統(tǒng)。構(gòu)成一個坐標(biāo)系統(tǒng)需要三個要素:坐標(biāo)原點、坐標(biāo)度量單位、坐標(biāo)軸的長度與方向。容器的ScaleLeft、ScaleTop屬性用于控制容器對象左邊和頂端的坐標(biāo),這兩個屬性值指定了該容器對象坐標(biāo)系統(tǒng)的坐標(biāo)原點。所有容器對象的ScaleTop、ScaleLeft值默認(rèn)為0,坐標(biāo)原點在容器的左上角。
容器的ScaleHeight、ScaleWidth屬性確定對象內(nèi)部垂直方向和水平方向的大小,這個數(shù)值與所用的度量單位有關(guān)。度量單位不同,ScaleHeight、ScaleWidth屬性值也不同。
屬性ScaleMode決定對象坐標(biāo)的度量單位,共有11種設(shè)置。表10-1所示為ScaleMode屬性常用的8種設(shè)置。表10-1ScaleMode常用屬性設(shè)置
ScaleMode屬性默認(rèn)時為Twip(中文譯為緹)。每英寸為1440緹,20個緹為1磅(Point)。這一度量單位規(guī)定的是對象打印時的大小,屏幕上的實際物理距離因顯示器分辨率而異,普通VGA顯示器在800?×?600模式下,最大窗體尺寸約為12?000?×?8700緹。
改變?nèi)萜鲗ο蟮腟caleMode屬性設(shè)置,不會改變?nèi)萜鞯拇笮『退谄聊簧系奈恢茫皇歉淖兞巳萜鲗ο蟮亩攘繂挝?。VB會重新定義對象的ScaleHeight和ScaleWidth屬性,以便使它們與新刻度保持一致。
窗體的Height屬性由ScaleHeight、標(biāo)題欄高度和水平邊框高度組成;同樣,其Width屬性值由ScaleWidth和垂直邊框?qū)挾冉M成。窗體實際可用高度和寬度由ScaleHeight和ScaleWidth確定。10.1.2自定義坐標(biāo)系統(tǒng)
容器對象的默認(rèn)坐標(biāo)系統(tǒng)對繪制控件不會有什么影響,但對作圖就有較大的影響。因為平時我們習(xí)慣的坐標(biāo)原點在中心(這是指數(shù)學(xué)上的),所以常需要對坐標(biāo)原點進行重新設(shè)置。Scale方法是建立用戶坐標(biāo)系統(tǒng)最方便的方法。其語法是:
[對象.]Scale[(xLeft,yTop)-(xRight,yBottom)]
例10-1
定義一個坐標(biāo)系統(tǒng),其坐標(biāo)原點為(0,0),即原點在窗體的中央位置,如圖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事件中,運行后,單擊窗體即可。 10.2與繪圖有關(guān)的屬性
10.2.1CurrentX和CurrentY
窗體、圖片框或打印機的CurrentX和CurrentY屬性給出了這些對象在繪圖時的當(dāng)前坐標(biāo)。這兩個屬性只能在程序中使用。當(dāng)坐標(biāo)系確定后,常用這兩個屬性來指定一個坐標(biāo)點,然后在這個點上輸出內(nèi)容。當(dāng)使用Cls方法后,CurrentX和CurrentY的值為坐標(biāo)原點,不論這個坐標(biāo)原點在對象中什么位置。
例10-2
用Print方法在窗體上隨機打印100個五角星“☆”。
程序代碼如下:程序運行效果如圖10-2所示。圖10-2當(dāng)前坐標(biāo)演示效果10.2.2DrawWidth和DrawStyle
窗體、圖片框或打印機的DrawWidth屬性給出在這些對象上所畫線條的寬度或點的大小,DrawStyle屬性給出在這些對象上所畫線條的線型。DrawWidth以像素為單位,最小為1,默認(rèn)值也為1。DrawStyle屬性設(shè)置及意義如表10-2所示。表10-2DrawStyle屬性設(shè)置10.2.3FillStyle和FillColor
封閉圖形的填充方式由FillStyle和FillColor這兩個屬性決定。FillColor指定填充圖案的顏色,默認(rèn)與ForeColor(控件的前景色)相同。表10-3所示為FillStyle指定填充的8種圖案。表10-3FillStyle屬性設(shè)置
1.RGB函數(shù)
RGB函數(shù)通過紅、綠、藍三基色混合產(chǎn)生某種顏色,其語法為:
RGB(紅,綠,藍)
2.?QBColor函數(shù)
QBColor函數(shù)采用QuickBasic所使用的16種顏色,其語法格式為:
QBColor(顏色碼)
顏色碼的取值范圍及含義見表10-4。表10-4顏色碼與顏色對應(yīng)表10.2.4AutoRedraw
AutoRedraw屬性對于使用各種圖形方法很重要。在窗體對象或圖片框中,如果AutoRedraw屬性值為True,則當(dāng)對象調(diào)整大小或被其他對象遮蓋后,原來所畫的內(nèi)容將被重新顯示出來;反之,則不會顯示出來。AutoRedraw默認(rèn)值為False。當(dāng)需要保存窗體對象或圖片框上所繪制的圖形時,其AutoRedraw屬性值必須為True。
讀者可以做一個簡單的測試,在一個窗體上用Print方法輸出一些內(nèi)容,當(dāng)AutoRedraw值為False時,將這個窗體最小化后再恢復(fù),窗體上的內(nèi)容全部看不見;當(dāng)AutoRedraw值為True時,無論這個窗體的大小如何變化,只要恢復(fù)到原來大小,原有的內(nèi)容會全部重新顯示出來。 10.3圖形控件
10.3.1PictureBox控件
PictureBox控件在前面章節(jié)作為其他控件的容器已經(jīng)有了多次應(yīng)用,該控件主要用來顯示圖片。顯示圖片時,Picture屬性設(shè)置為被顯示的圖片文件名(含路徑名)。在程序運行時可以使用LoadPicture()函數(shù)在圖片框中裝入圖片。
PictureBox控件不提供滾動條,也不能伸展被裝入的圖片以適應(yīng)控件尺寸,但可用PictureBox的AutoSize屬性調(diào)整PictureBox的大小以適應(yīng)圖片尺寸。當(dāng)AutoSize設(shè)置為True時,PictureBox能自動調(diào)整大小與顯示的圖片匹配;當(dāng)AutoSize設(shè)置為False時,PictureBox不能改變大小,當(dāng)圖片比控件大時,超過部分將被截掉。10.3.2Image控件
在窗體上使用Image控件的步驟與使用PictureBox相同,但前者比后者占用更少的內(nèi)存,速度更快。二者的區(qū)別是Image不能用作容器。
Image沒有AutoSize屬性,但有Stretch屬性。當(dāng)Stretch設(shè)置為True時,加載的圖片可自動調(diào)整大小以適應(yīng)Image的大小(有可能失真);當(dāng)Stretch設(shè)置為False時,Image會自動改變大小以適應(yīng)加載的圖片。10.3.3Line控件
Line控件可以用來畫線。Line控件的主要屬性是BorderWidth和BorderStyle,分別控制畫線的寬度和線型,運行時的主要屬性是所畫線條的兩個端點坐標(biāo)(x1,y1)和(x2,y2),分別控制線條的起點和終點。
10.3.4Shape控件
Shape控件可以用來畫矩形、正方形、橢圓、圓、圓角矩形及圓角正方形。當(dāng)Shape控件放到窗體時顯示為一個矩形,通過Shape屬性可確定所需要的幾何形狀。FillStyle屬性為Shape指定填充圖案,也可用FillColor屬性為Shape著色。10.3.5圖形文件的保存
對于繪制或加載在窗體、Image和PictureBox內(nèi)的圖形,可以使用SavePicture命令把圖形以文件的形式保存到磁盤中。命令格式為:
SavePicture對象名.屬性,"文件名" 10.4圖形方法
10.4.1Line方法
Line方法用于在指定對象上畫直線或矩形。其語法格式如下:
對象.Line[Step](x1,y1)-[Step](x2,y2),[顏色],[B][F]
例10-3
用Line方法在窗體上畫出一組隨機直線,第一條線從窗體中心開始,終點隨機產(chǎn)生,以后每一條線均從上一條線的終點開始,線條顏色也隨機產(chǎn)生。
分析:本題可以先確定坐標(biāo)系統(tǒng),將窗體中心定為原點,終點及線條顏色由隨機函數(shù)產(chǎn)生。為了看清楚產(chǎn)生過程,本題用計時器來定時畫線,單擊窗體則停止。
程序代碼如下:
PrivateSubForm_Click()
Timer1.Enabled=False
EndSub
PrivateSubForm_Load()
Scale(100,100)-(0,0) '設(shè)置坐標(biāo)系統(tǒng)圖10-3例10-3運行結(jié)果10.4.2Circle方法
Circle方法用于畫圓、橢圓、圓弧和扇形。其語法格式如下:
對象.Circle[[Step](x,y),半徑[,顏色][,起始角][,終止角][,橫縱軸比率]]
例10-4
以下代碼可分別畫出圓、扇形、橢圓及圓弧。圖10-4例10-4運行結(jié)果10.4.3Pset方法
Pset方法用于在窗體、圖片框或打印機對象上指定的位置畫點。其語法格式如下:
對象.Pset[Step](x,y)[,顏色]
例10-5
建立一個坐標(biāo)系并繪制函數(shù)f(x)?=?sin(x)在(-360,360)之間的圖形。
分析:先定義坐標(biāo)系,本例將坐標(biāo)原點定義在一個PictureBox的中心,PictureBox的左上角坐標(biāo)為(-360,1),右下角坐標(biāo)為(360,-1)。
程序代碼如下:程序運行結(jié)果如圖10-5所示。圖10-5例10-5運行結(jié)果10.4.4Point方法
Point方法用于返回窗體或圖片框上指定點的RGB顏色。其語法格式為:
對象.Point(x,y)
例10-6
用Point方法獲取一個區(qū)域的信息并用Pset方法畫在另一個區(qū)域。
分析:在一個窗體上畫出兩個圖片框,Picture2的高和寬均是Picture1的2倍,但二者的坐標(biāo)系統(tǒng)設(shè)置相同。先在Picture1中用Print輸出幾個字符,再將Picture1中各點顏色逐個取出,畫到Picture2中。那么,在Picture2中得到的字符長和寬均將是Picture1中字符長寬的2倍。
程序代碼如下:圖10-6例10-6運行結(jié)果
10.5PaintPicture方法
處理圖像除了應(yīng)用Pset方法和Point方法外,還可以使用PaintPicture方法,而且后者更加方便。
Windows提供了移動位圖塊的功能,VB通過PaintPicture方法可實現(xiàn)從一個窗體或圖片框控件中向另一個對象復(fù)制一個矩形區(qū)域的像素。
PaintPicture方法的語法如下:
目標(biāo)對象.PaintPicturepicture,x1,y1,Width1,Height1,x2,y2,Width2,Height2,Opcode10.5.1位圖的復(fù)制
如果要將圖片框1(Picture1)中的位圖按原大小復(fù)制到圖片框2(Picture2)中,命令如下:
Picture2.PaintPicturePicture1.Picture,0,0
如果僅復(fù)制其中的一部分,則指定起點坐標(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ù),則兩個方向同時翻轉(zhuǎn)圖形。10.5.3位圖的縮放
只要改變目標(biāo)圖形的高度和寬度就可實現(xiàn)位圖的縮放。
例10-7
對圖片框中圖像進行各種翻轉(zhuǎn)及縮小操作。
程序運行界面如圖10-7所示。圖中包括2個圖片框(Picture1、Picture2)和4個命令按鈕(命令按鈕為數(shù)組,下標(biāo)從0~3,完成的功能如其標(biāo)題)。圖片框的AutoSize屬性為True,在屬性窗口中為Picture1加上圖片。圖10-7例10-7運行界面10.5.4位圖的旋轉(zhuǎn)
要旋轉(zhuǎn)位圖需要對原始圖片按行和列的順序或按列和行的順序讀取像素點,然后在目標(biāo)圖形區(qū)顛倒行和列的順序后復(fù)制像素點,這需要費一點時間。當(dāng)然用Pset和Point方法配合也能完成。以下程序可以將P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年混凝土管樁購銷協(xié)議版B版
- 滬科版九年級數(shù)學(xué)上冊期末復(fù)習(xí)考點 第24章 圓知識歸納與題型突破(17類題型清單)
- 2024-2030年中國塑料中空成型機市場供需形勢分析及未來發(fā)展策略研究報告
- 2024年版土地中介合同(精練)3篇
- 2024全新股東合作協(xié)議書下載:企業(yè)戰(zhàn)略聯(lián)盟與共同投資協(xié)議3篇
- 2024年三輪車維修保養(yǎng)及配件供應(yīng)協(xié)議3篇
- 2024年樁基施工項目合作合同書版B版
- 2025年昆明貨運資格證試題答案解析
- 2024年特定借款權(quán)讓渡合同版B版
- 2025年陜西貨運從業(yè)資格證考題500道
- DB65-T 4784-2024 冰川范圍調(diào)查技術(shù)規(guī)范
- 藥物化學(xué)智慧樹知到答案2024年徐州醫(yī)科大學(xué)
- 期末+(試題)+-2024-2025學(xué)年人教PEP版英語六年級上冊
- 《物流信息技術(shù)與應(yīng)用》期末考試復(fù)習(xí)題庫(含答案)
- LNG加氣站運營與維護方案
- 人教版數(shù)學(xué)六上第四單元《比》全單元教學(xué)設(shè)計
- 2024年下半年教師資格考試高中思想政治學(xué)科知識與教學(xué)能力測試試卷及答案解析
- LY/T 3371-2024草原生態(tài)狀況評價技術(shù)規(guī)范
- 2024年中華全國律師協(xié)會招聘5人歷年(高頻重點復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 供貨能力方案
- 四川2024年四川省公安廳招聘警務(wù)輔助人員186人筆試歷年典型考題及考點附答案解析
評論
0/150
提交評論