工學第10章處理圖形課件_第1頁
工學第10章處理圖形課件_第2頁
工學第10章處理圖形課件_第3頁
工學第10章處理圖形課件_第4頁
工學第10章處理圖形課件_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第10章 處理圖形Visual Basic 程序設計教程本章主要介紹繪圖屬性繪圖方法圖片框影像框2Visual Basic程序設計教程10.1 概述圖形一般指圖繪形象,描畫出物體的輪廓、形狀等。由圖元組成,圖元可以是點、線、圓、字符、填充區(qū)等。每個圖元有它的數(shù)據(jù)定義和外貌特征。如線段端點、粗細等。VB提供了一些控件和方法,繪制圖元,最終構成圖形容器是繪制圖形或控件的場所容器中的對象只能在容器內變動。窗體、框架、圖片框是容器移動容器時,內部對象與容器的相對位置保持不變。3Visual Basic程序設計教程VB容器的圖層從前到后為:前層非繪圖控件所在層,如命令按鈕、復選框等;中間層繪圖控件和標簽

2、所在層;底層繪圖方法顯示結果的地方。圖層顯示特性依靠:AutoRedraw和ClipControls屬性的設置及繪圖方法是否在Paint事件過程內。圖像一般是指繪制、攝制或印制的形象。可將它們裝載到圖片框、影像框可窗體上4Visual Basic程序設計教程10.2 模擬單擺【例10-1】設計一個模擬單擺控件:圖片框控件Picture1:作單擺容器直線控件Line1:作繩索形狀控件Shape1:作球(設計界面中為矩形)定時器控件Timer1:控制擺動。5Visual Basic程序設計教程2個模塊級變量A和D,表示擺動角度和方向。2個事件過程:Form_Load,初始化界面和控件屬性Timer

3、1_Timer,控制單擺的運動。6Visual Basic程序設計教程 Option ExplicitDim A As Integer, D As Integer 模塊級變量,A表示角度,D表示方向Const PI = 3.1415926Private Sub Form_Load() Form1.Width = 1.3 * Form1.Height 設置窗體的寬度和高度比例 Picture1.Width = 1.5 * Picture1.Height 設置圖片框的寬度和高度比例 Picture1.Scale (-150, -5)-(150, 195) 更改坐標系統(tǒng) Shape1.FillSty

4、le = 0 使形狀控件的填充模式為實心 Shape1.FillColor = vbRed 使形狀控件填充紅色 Shape1.BorderColor = vbRed 使形狀控件的邊界顏色為紅色 Shape1.Width = 15 按坐標系,更改形狀控件大小 Shape1.Shape = 3 使形狀控件的形狀為圓形 Line1.BorderColor = vbRed 使繩索顏色為紅色 Line1.X1 = 0: Line1.Y1 = 0 使繩索上端在原點(0,0)上 Picture1.AutoRedraw = True 使圖片框的重繪屬性為True Picture1.Line (-10, 0)-

5、(10, 0) 頂端畫一條固定繩索的橫線 Timer1.Interval = 100 A = -20: D = -1 設置初始角度和方向End Sub7Visual Basic程序設計教程 Private Sub Timer1_Timer() Dim X As Single, Y As Single If D = -1 Then A = A + 2 Else A = A - 2 X = 170 * Sin(A * PI / 180) 確定圓心和直線下端的位置 Y = 170 * Cos(A * PI / 180) Line1.X2 = X: Line1.Y2 = Y 更改直線下端位置 Shap

6、e1.Left = X - Shape1.Width / 2 使圓心位置在直線的下端 Shape1.Top = Y - Shape1.Height / 2 If D = -1 And A = 20 Or D = 1 And A = -20 Then D = -D 20改方向End SubScale方法使圖片框左上角和右下角坐標分別為(-150,-5)和(150,195)。而170表示著繩索的長度,可以取其它值,但應使整個單擺可見。8Visual Basic程序設計教程10.3 什么是VB坐標系坐標系是用于確定數(shù)與基本幾何對象之間對應關系的參考系,是形和數(shù)結合的基礎。VB坐標系是確定對象和圖形位

7、置的參考系。VB中每一個容器采用(x,y)的二維坐標系統(tǒng)每個對象、圖形操作,都要使用坐標系。VB坐標系統(tǒng)使用有以下規(guī)則:移動或調整控件大小時,使用容器的坐標系統(tǒng)。繪圖方法和Print方法,使用容器的坐標系統(tǒng)。9Visual Basic程序設計教程10.3.1 VB默認坐標系VB坐標系每個點用(x,y)表示x是水平方向沿x軸的位置,默認最左端是0y是垂直方向沿y軸的位置,默認最上端是0坐標單位又稱為坐標刻度,默認緹(twips)。還可以使用磅、像素和毫米等。屏幕的左上角的坐標總是(0,0)10Visual Basic程序設計教程其它容器在缺省狀態(tài)下,左上角是(0,0)。窗體(0,0)點指窗體標題

8、欄下邊沿的左上角。使用對象的刻度屬性和Scale方法,可重新設置容器的坐標系統(tǒng)。11Visual Basic程序設計教程10.3.2 Scale方法使用Scale方法可以創(chuàng)建自定義刻度。Scale方法的使用格式為: 容器名.Scale (x1,y1)-(x2,y2)1容器名指窗體名或圖片框控件名。缺省指當前窗體2(x1, y1)和(x2, y2) 為新坐標系統(tǒng)左上角和右下角坐標3省略(x1,y1)-(x2,y2),恢復缺省刻度。12Visual Basic程序設計教程 例10-1中Picture1.Scale (-150, -5)-(150, 195)更改圖片框坐標系如上圖。這樣求運動點(x,

9、y)的位置比較方便設繩索長為170,則當繩索與y軸的夾角為a時,則x=170sina,y=170cosa。13Visual Basic程序設計教程10.3.3 坐標屬性使用坐標屬性可以更改容器的坐標刻度,也可以自定義坐標系。ScaleMode:設置坐標刻度,缺省值為1(緹)ScaleLeft:表示或設置對象左邊界水平坐標ScaleTop:表示或設置對象上邊界垂直坐標ScaleWidth:表示或設置對象內水平度量單位數(shù)ScaleHeight:表示或設置對象內垂直度量單位數(shù)CurrentX:當前輸出的水平坐標。程序中使用。CurrentY:當前輸出的垂直坐標。程序中使用。14Visual Basi

10、c程序設計教程屬性說明:ScaleWidth、ScaleHeight不同于Width、HeightScaleMode屬性可以取值07,表示刻度分別為自定義、緹、磅、像素、字符、英寸、毫米和厘米。更改ScaleWidth、ScaleHeight、ScaleLeft、ScaleTop之 一時,VB自動將ScaleMode的值設為0。如Scale (-150, -5)-(150, 195),也可以表示成: ScaleWidth=300:ScalHeight=200: ScaleLeft=-150:ScaleTop=-5若要改坐標軸方向,可將ScaleWidth或ScaleHeight設置成負值15V

11、isual Basic程序設計教程ScaleMode屬性取值為17時的刻度,稱為標準刻度在設置了ScaleMode屬性的值后,VB會重定義ScaleWidth和ScaleHeight,使它們與新刻度保持一致。左上角坐標總是:(ScaleLeft,ScaleTop)右下角坐標總是: (ScaleLeft+ScaleWidth,ScaleTop +ScaleHeight)。16Visual Basic程序設計教程10.4 使用繪圖方法10.4.1 畫點PSet方法繪圖方法可畫點、畫線、畫矩形、畫橢圓等。格式:對象名.PSet (x,y) ,顏色1(x,y)為所畫點的坐標位置2顏色指點的顏色。缺省時

12、由容器的ForeColor屬性決定。例如:PSet (1000, 1000), RGB(255, 0, 0)在(1000,1000)處畫紅點,大小由容器的DrawWidth屬性決定。3擦除一個點,可采用以背景色重畫點。4 Cls方法可擦除繪圖方法及Print方法的輸出內容。17Visual Basic程序設計教程【例10-2】繪制一條y=x2的拋物線。Private Sub Form_Click() Dim x As Single Scale (-10, 105)-(10, -2) For x = -9 To 9 Step 0.01 PSet (x, x * x) Next xEnd Sub1

13、8Visual Basic程序設計教程10.4.2 畫直線和矩形Line的方法使用Line方法可以畫出直線或矩形。1畫線格式:對象名.Line (x1,y1)-(x2,y2) ,顏色(x1,y1)和(x2,y2)分別為起點和終點坐標如:Line (100, 150)-(1400, 1300), vbRed 缺省起點 (x1,y1),表示將當前輸出位置作為 起點。19Visual Basic程序設計教程坐標點的另一種表示形式為:Step(x,y)是相對位置的表示法,表示當前輸出位置水平方向加上x,垂直方向加上y后得到的坐標點。對象的當前位置由CurrentX和CurrentY決定Line (10

14、0, 200)-(150, 250)等價:Line (100, 200)-Step(50, 50)VB畫直線時,包括了起點,未包括終點。畫終點可用: PSet Step(0, 0), color連續(xù)使用缺省起點的Line方法,可以繪制多點折線。20Visual Basic程序設計教程【例10-3】在窗體上中間畫出一個等腰三角形??筛鶕?jù)窗體ScaleWidth和ScaleHeight屬性確定三點位置由于一條線的終點等價于另一條線的起點,因此除了第一條線以外,其它兩條線均可用缺省起點的Line方法。21Visual Basic程序設計教程Private Sub Command1_Click() D

15、im x1 As Integer, x2 As Integer, x3 As Integer Dim y1 As Integer, y2 As Integer, y3 As Integer x1 = ScaleWidth / 2: y1 = ScaleHeight / 5 x2 = ScaleWidth / 5: y2 = ScaleHeight / 5 * 4 x3 = ScaleWidth / 5 * 4: y3 = ScaleHeight / 5 * 4 Line (x1, y1)-(x2, y2) Line -(x3, y3) Line -(x1, y1)End Sub22Visual

16、 Basic程序設計教程2畫矩形采用格式: 對象名.Line (x1,y1)-(x2,y2) ,顏色,BF(x1,y1)和(x2,y2) 為矩形的兩個對角頂點坐標缺省(x1,y1),表示當前輸出位置作(x2,y2)的對角頂點參數(shù)B表示繪制矩形參數(shù)F表示矩形填充,即為實心的矩形如:Line (500, 200)-Step(200, 200), vbRed, B如: Line (500, 200)-Step(200, 200), vbRed, BF若顏色缺省,逗號也不能省23Visual Basic程序設計教程【例10-4】編制簡易黑板。功能是:用鼠標左鍵在窗體上拖動時,畫出線條;用鼠標右鍵在窗體

17、上拖動時,擦去線條。擊“清除” 擦去所有痕跡。事件: 窗體MouseDown:畫出按下鼠標的第一點窗體MouseMove:畫出線條或刪除線條用背景色,畫小矩形擦“清除”的Click:擦去所有痕跡24Visual Basic程序設計教程Private Sub Command1_Click() 擦“黑板”ClsEnd SubPrivate Sub Form_Load() 初始化 Form1.Caption = 簡易黑板 Form1.BackColor = RGB(0, 0, 0) Form1.ForeColor = RGB(255, 255, 255) Command1.Caption = 擦除E

18、nd Sub25Visual Basic程序設計教程Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Button = 1表示按下左鍵, 畫第一點 Form1.PSet (X, Y) End IfEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then 左鍵

19、拖動畫線 Form1.Line -(X, Y) ElseIf Button = 2 Then 右鍵拖動以黑色畫實心方塊,起擦除作用 Form1.Line (X - 200, Y - 200)-(X + 200, Y + 200), RGB(0, 0, 0), BF End IfEnd Sub26Visual Basic程序設計教程10.4.3 畫圓、弧和橢圓Circle方法 Circle方法可畫出圓、圓弧、扇形或橢圓。1畫圓格式:對象名.Circle Step(x,y), 半徑 ,顏色Step(x,y)表示圓心的坐標。半徑的度量單位與容器坐標系的單位相同,不能為負。畫圓時,半徑通常由水平單位指

20、定。27Visual Basic程序設計教程如下列代碼繪制如圖。Scale (-50, 20)-(50, -20)Line (-15, 15)-(15, -15), , BCircle (0, 0), 15又如以窗體中心為圓心,以窗體ScaleWidth的1/4為半徑畫圓:Circle (ScaleWidth / 2 + ScaleLeft, ScaleHeight / 2 + ScaleTop), _ScaleWidth / 428Visual Basic程序設計教程【例10-5】編程,在窗體中間畫1000個同心多彩圓。 編寫通用過程PaintCircle:繪制彩色圓Sub PaintCir

21、cle() Dim R As Integer, X As Integer, Y As Integer X = ScaleWidth / 2 將x坐標設置在窗體內橫向中間 Y = ScaleHeight / 2 將y坐標設置在窗體內縱向中間 If X Y Then R = X * 0.9 Else R = Y * 0.9 Circle (X, Y), R * Rnd, RGB(Rnd * 255, Rnd * 255, Rnd * 255) 畫圓End Sub29Visual Basic程序設計教程 Private Sub Command1_Click()Dim i As IntegerFor

22、i = 1 To 1000 PaintCircleNextEnd Sub 其中乘0.9是為了最大圓不會緊貼窗體邊緣。30Visual Basic程序設計教程2畫弧格式為:對象名.Circle Step(x,y),半徑,顏色, Start, End, Aspect圓弧以弧度為單位,按逆時針方向畫弧。Start和End表示弧線起始角和終止角的弧度數(shù)據(jù)平行于X軸的正向為0弧度如果Start參數(shù)或End參數(shù)是負數(shù),則VB將畫一條連接圓心到負端點的直線。使用不為1的 Aspect參數(shù),表示為橢圓弧線的一段。如:Circle (800, 800), 500, , -3.14 / 2, -3.14 / 3C

23、ircle (1800, 800), 500, , 0, 3 * 3.14 / 431Visual Basic程序設計教程3畫橢圓格式:對象名.Circle Step(x,y),半徑,顏色, Start, End, Aspect畫圓還是畫橢圓由圓的方位比Aspect決定。它指定了垂直長度和水平長度的比例VB在Circle方法中的半徑參數(shù)對應橢圓的長軸。 ,顏色, Start, End, Aspect四項中任一項都是可選的,當前面的項缺省時,逗號仍不能省去。省略Start, End中的任一項,表示該項為0,畫弧。兩項都省去,表示畫圓或橢圓。如以下代碼,使用半徑均為500,但使用不同的方位比,其效

24、果如圖。Circle (800, 800), 500, , , , 3Circle (800, 800), 500Circle (2000, 800), 500, , , , 1 / 332Visual Basic程序設計教程10.5 使用繪圖屬性10.5.1 更改線條形式1DrawWidth屬性DrawWidth屬性可以設置線條的粗細、點的大小DrawWidth屬性值以像素為單位,取值范圍為132767當數(shù)據(jù)取得很大時,可能一個點就能占滿整個容器。33Visual Basic程序設計教程下面代碼根據(jù)DrawWidth取值,效果如圖。Private Sub Form_Click()Dim i

25、As Integer, t As Integert = ScaleWidth / 20For i = 1 To 20 Step 2 Form1.DrawWidth = i PSet (t * i, ScaleHeight / 4) Line (t * i, ScaleHeight / 2)-(t * i, ScaleHeight)Next iEnd Sub34Visual Basic程序設計教程2DrawStyle屬性DrawStyle屬性用于指定繪制的圖形線條形式。DrawStyle屬性取值為06,形式如表。6:內收實線,框線較粗時,才可見效果,如圖35Visual Basic程序設計教程1

26、0.5.2 填充圖案 1FillStyle屬性設置封閉圖形的填充圖案樣式,取值0至7缺省值為1 ,無論何種色彩,均表現(xiàn)為空心。如希望窗體上顯示各填充效果,可用代碼:t = ScaleWidth / 9For I = 0 To 7 FillStyle = I Line (I * t + 100, 500)-(I + 0.8) * t + 100, 500 + 1000), , B Next I 36Visual Basic程序設計教程2FillColor屬性FillColor屬性表示填充顏色只要FillStyle屬性不為1,就可FillColor填色VB填充矩形、圓、扇形等封閉圖形FillCol

27、or屬性的設置方式和ForeColor相同37Visual Basic程序設計教程注意FillColor和ForeColor的差別:前者用于填充顏色后者為默認的邊線顏色,或輸出文字顏色。若Line語句中使用了參數(shù)F,則所有的填充形式和填充顏色都無效。38Visual Basic程序設計教程【例10-6】根據(jù)繪圖屬性,畫扇形、畫橢圓、畫環(huán)。對于圓環(huán),沒有單獨語句,可用圖形組合。Private Sub Command1_Click() 畫扇形。 FillStyle = 7 FillColor = RGB(255, 0, 0) Circle (800, 1000), 800, , -0.0001,

28、-3.14 * 2 / 3End Sub39Visual Basic程序設計教程 Private Sub Command2_Click() 畫兩個橢圓 FillStyle = 1 畫一個紅色點線的空心橢圓 DrawStyle = 2 : Circle (2300, 500), 400, vbRed, , , 2 DrawStyle = 0 恢復默認的線條樣式 FillStyle = 0 畫線寬3個像素,線條紅色的 一個實心黃橢圓 DrawWidth = 3 : FillColor = vbYellow Circle (2300, 1200), 400, vbRed, , , 0.5 DrawW

29、idth = 1 恢復默認線寬End SubPrivate Sub Command3_Click() 繪制圓環(huán) FillStyle = 4 畫一個有填充的大圓 FillColor = vbBlue : Circle (3500, 1000), 600, vbRed FillStyle = 0 畫一個實心的以背景色填充的同心小圓 FillColor = BackColor : Circle (3500, 1000), 300, vbRedEnd Sub為了在0弧度上能畫上橫線,使用了-0.000140Visual Basic程序設計教程10.6 使用繪圖控件10.6.1 直線控件(Line)直線

30、控件可以在容器對象中繪制直線該直線不能被Cls方法清除,程序中修改端點可以移動直線。1創(chuàng)建直線控件:工具箱內選取直線工具41Visual Basic程序設計教程2直線控件的主要屬性(名稱)Name。直線控件名稱。缺省值為Line1BorderColor:設置線條顏色BorderStyle:線條樣式,取值為06,分別表示透明、實線、破折線、點線、點劃線、雙點劃線和內收實線。BorderWidth:設置線條粗細X1和Y1:分別為起點的x坐標和y坐標X2和Y2:分別為終點的x坐標和y坐標直線控件沒有事件42Visual Basic程序設計教程10.6.2 形狀控件(Shape)形狀控件可以直接在容器

31、對象中繪制圖形這些圖形可是圓、橢圓、也可以是矩形等1創(chuàng)建形狀控件:在工具箱內選取工具2形狀控件的屬性同直線控件的BorderColor、BorderStyle、BorderWidth常規(guī)屬性Height、Width、Left、Top、Visible等Name(名稱),形狀控件名稱。缺省值為Shape143Visual Basic程序設計教程FillColor:設置填充顏色FillStyle:填充樣式,取值07,默認為1,即透明。Shape:設置圖形的形狀,取值05,分別表示矩形、正方形、橢圓、圓、圓角矩形、圓角正方形。默認為0??丶閳A時,半徑為Height/2和Width/2的最小值;控件為

32、正方形時,邊長為Height和Width的最小值。Shape控件沒有事件。44Visual Basic程序設計教程【例10-7】用直線控件和形狀控件制作鐘??丶?條直線控件Line1Line4作為3、6、9、12點的位置Line5Line7分別作為時、分、秒的指針。1個形狀控件:作為鐘的圓盤用Time、Hour、Minute、Second函數(shù)獲得時、分、秒為了計算方便,原點(0,0)改在窗體中心,并且軸方向與數(shù)學上的一致,但沒有更改刻度。時和分采用實數(shù)型本題所有的屬性設置在Form_Load中完成。 45Visual Basic程序設計教程Dim H1 As Integer, M1 As I

33、nteger, S1 As Integer 指針長度Const PI = 3.1415926Private Sub Form_Load() 初始化Dim R As Integer 鐘的半徑Scale (-ScaleWidth / 2, ScaleHeight / 2)-(ScaleWidth / 2, -ScaleHeight / 2) Shape1.FillStyle = 0: Shape1.Shape = 3: Shape1.FillColor = vbYellow Shape1.Left = -Shape1.Width / 2: Shape1.Top = Shape1.Height /

34、2 If Shape1.Width= Picture1.ScaleWidth Then Label1.Caption = 數(shù)據(jù)讀取完成!共用了 & (n + 1) & 秒 MsgBox 數(shù)據(jù)讀取完成!, , 消息 Command1.Enabled = True : Command1.SetFocus n = 0 : Timer1.Enabled = FalseElse n = n + 1End IfEnd Sub54Visual Basic程序設計教程10.7.2 影像框(Image)影像框控件與圖片框控件相似影像框控件只用于顯示圖片,不能作為容器。1創(chuàng)建影像框:在工具箱內選取影像框工具2影像

35、框的屬性影像框控件使用布局屬性和可見、可用屬性。沒有字體屬性、顏色屬性、坐標屬性和繪圖屬性。55Visual Basic程序設計教程其它主要屬性:(名稱)Name。影像框控件名稱,缺省值為Image1。Stretch:設置加載的圖片是否能自動擴展或縮小以適應控件的尺寸,還是影像框去適合圖片的大小。缺省值為False。Stretch為True時,影像框大小不會自動改變,可由影像框的大小來調整圖片的大小Stretch為為False 時,影像框的大小根據(jù)圖片大小來自動調整。Picture:設置控件內顯示的圖片文件。56Visual Basic程序設計教程3影像框的事件Click、DblClick、M

36、ouseDown、MouseMove、MouseUp但沒有Paint和Resize事件??捎肐mage控件創(chuàng)建按鈕(因識別Click)。4影像框的方法可用Move方法移動或調整它的大小沒有繪圖方法。57Visual Basic程序設計教程5加載圖片使用Picture屬性可以在屬性窗口中設置可以利用函數(shù)LoadPicture來設置Picture屬性。Image使用較少系統(tǒng)資源,且加載比PictureBox快。當只要求顯示圖片時,可以選用Image控件。58Visual Basic程序設計教程【例10-9】利用定時器控件編程,使得4幅圖片在影像框Image1中輪流顯示,當單擊Image1時,將放大

37、的圖片顯示在Image2中??丶簜€影像框控件: Stretch屬性設置為True個定時器控件使用靜態(tài)變量控制圖片顯示。59Visual Basic程序設計教程10.7.2影像框-圖片輪流顯示 Private Sub Form_Load() 初始化屬性 Timer1.Interval = 1000 Image1.Stretch = True: Image2.Stretch = True Image1.ToolTipText = 請單擊 當鼠標移動到Image1上,顯示文字End SubPrivate Sub Image1_Click() 復制 Image2.Picture = Image1.P

38、ictureEnd SubPrivate Sub Timer1_Timer() Static N As Integer Image1.Picture = LoadPicture(D:Wen & N & .jpg) N = (N + 1) Mod 4End Sub 文件名使用了0.jpg3.jpg,故可使用字符串表達式: D:Wen & N & .jpg60Visual Basic程序設計教程10.7.3 圖形復制PaintPicture方法,可以實現(xiàn)移動圖片、復制圖片。格式:Object.PaintPicture picture,x1,y1,width1,height1,x2, y2, wid

39、th2,height2對picture圖片中以(x2,y2)為左上角,width2, height2為寬度和高度的圖形區(qū)域,復制到Object以(x1,y1)為左上角,寬度和高度為width1,height1的區(qū)域中picture為必需項,表示圖形對象源由Form或PictureBox的Picture屬性所決定。61Visual Basic程序設計教程缺省x2,y2, width2,height2則表示將整個picture參數(shù)指定的圖片,復制到Object中。例如: ( Pic1 和Pic12為兩個圖片框)Pic1.PaintPicture Pic2.Picture, 0, 0, w1, h1

40、, x2, y2, w2, h2其中(0,0)和(x2, y2)分別使用Pic1和Pic2的坐標系統(tǒng)。62Visual Basic程序設計教程【例10-10】圖形復制。有兩張圖片放入影像框中,單擊任何一個,復制到圖片框中央??丶航⒂?個元素的Image控件數(shù)組Img1 (0)和Img1(1)建立1個圖片框控件PicShow設置各對象(名稱)屬性。設置2個Image控件數(shù)組元素的Stretch屬性為True。63Visual Basic程序設計教程Private Sub Form_Load() Img1(0).Picture = LoadPicture(e:fengtempAPPWIZ.IC

41、O) Img1(1).Picture = LoadPicture(e:fengtempface.ico) PicShow.FontSize = 15End SubPrivate Sub Img1_Click(Index As Integer) Dim t As String t = 左右 PicShow.Cls PicShow.Print 你點中 & Mid(t, Index + 1, 1) & 邊的圖片: PicShow.PaintPicture Img1(Index).Picture, _ PicShow.Width/2 - Img1(Index).Width/2, _ PicShow.H

42、eight/2 - Img1(Index).Height/2, _ Img1(Index).Width, Img1(Index).Height 復制到中央End Sub64Visual Basic程序設計教程10.7.4 色彩使用BackColor、ForeColor、BorderColor、FillColor屬性可設置顏色顏色的設置可以使用顏色常量,也以使用QBColor函數(shù)或RGB函數(shù)。65Visual Basic程序設計教程與顏色有關的其它方法:Point方法可以獲得某點顏色值,基本格式為: 對象名. Point(x, y)該方法將返回一個長整型的RGB顏色值。例如:PointColor

43、 = Point (500, 500)如果要對某個長整型顏色值A,區(qū)分其紅、綠和藍3種顏色成分,可以使用以下表達式:Red = A Mod 256 : Green = A 256 Mod 256 Blue = A 256 25666Visual Basic程序設計教程10.8 程序舉例10.8.1 房子和太陽【例10-11】使用繪線、繪圓、繪點的方法,畫出如圖所示的圖形(不含數(shù)字)。因為太陽周圍要畫出多條直 線作為光,可將坐標系原點 移到太陽的中心點上,循環(huán) 完成光芒繪制。其它直線在確定坐標點后,一條一條地畫67Visual Basic程序設計教程Private Sub Command1_Cl

44、ick()Const PI = 3.1415926Dim i As SingleCls : Scale (-110, 30)-(30, -80) 更改坐標系FillStyle = 0: FillColor = vbRed 畫太陽Circle (0, 0), 10, vbRedFor i = 0 To 2 * PI Step PI / 10 畫光芒 Line (15 * Cos(i), 15 * Sin(i)-(25 * Cos(i), 25 * Sin(i)Next iFillStyle = 1 開始畫房子(連續(xù)畫8條直線)Line (-80, -20)-(-30, -20) 先畫房頂最上面一

45、水平線Line -(-20, -30): Line -(-70, -30): Line -(-80, -20) 前次終點作本次起點Line -(-90, -30): Line -(-88, -30) 至此,房頂畫完Line -(-88, -65): Line -(-70, -70) 畫側面的墻Line (-70, -30)-(-22, -70), , B 用矩形畫正面的墻Line (-60, -45)-(-50, -60), , B: Line (-55, -45)-(-55, -60) 畫窗Line (-40, -45)-(-30, -70), , B 畫門DrawWidth = 3 : P

46、Set (-38, -55) 畫門把手DrawWidth = 1 恢復缺省值End SubPrivate Sub Form_Load()AutoRedraw = TrueEnd Sub68Visual Basic程序設計教程10.8.2 制作拼圖【例10-12】某單位職工,2029、3039、4049、5059各年齡段人數(shù)分別為5人、7人、10人、8人,退休職工15人。制作表示各年齡段人員分布情況的餅圖。因各段加起來為100%,即為1 個圓,角度即為269Visual Basic程序設計教程各段人數(shù)所占比例*2就是扇形的弧度根據(jù)弧度即可制作各實心扇形構成餅圖。同時把相應的顏色用畫矩形的方法顯示

47、在圖片框中,并在邊上標出人數(shù)。 70Visual Basic程序設計教程Private Sub Command1_Click()Const PI = 3.1415926Dim Man, Alpha() As Single, Sum As Integer, i As IntegerDim A As Single, B As Single, N As Integer a起始角,b扇形終止角Man = Array(5, 7, 10, 8, 15) 包含各段人數(shù)的數(shù)組元素初始化Sum = 0: N = UBound(Man) + 1 n為元素個數(shù)For i = 0 To N 1: Sum = Sum

48、+ Man(i) : Next i 求總人數(shù)ReDim Alpha(N - 1) 存放各人數(shù)段對應扇形的弧度A = 0.00001 因負0不能被表示,所以用0的近似值FillStyle = 0: Picture1.FillStyle = 0 窗體和圖片框都繪制實心圖形For i = 0 To N - 1 繪制扇形、圖片框中圖例及輸出人數(shù) Alpha(i) = 2 * PI * Man(i) / Sum 計算扇形對應的弧度 FillColor = QBColor(2 * i): Picture1.FillColor = QBColor(2 * i) B = A + Alpha(i) 計算終止角的

49、弧度 If B 2 * PI Then B = B - 2 * PI 弧度不能大于2 Circle (ScaleWidth / 2, ScaleHeight / 2), ScaleWidth / 4, , -A, -B 繪扇形 Picture1.Line (0, i * Picture1.ScaleHeight / N)- _(Picture1.ScaleWidth / 2, (i + 1) * Picture1.ScaleHeight / N), , B繪矩形 Picture1.CurrentY = i * Picture1.ScaleHeight / N 確定Print位置 Picture1.Print Man(i) 輸出人數(shù) A = B 將已輸出的終止角作下一次的起始角Next iEnd Sub71Visual Basic程序設計教程 Private Sub Form_Load() 屬性初始化Form1.AutoRedraw = True: Picture1.AutoRedraw = TrueLabel1.Caption = “各年齡段人員分布圖”Label1.AutoSize = TrueLa

溫馨提示

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

評論

0/150

提交評論