VB程序設計第8章圖形程序設計課件_第1頁
VB程序設計第8章圖形程序設計課件_第2頁
VB程序設計第8章圖形程序設計課件_第3頁
VB程序設計第8章圖形程序設計課件_第4頁
VB程序設計第8章圖形程序設計課件_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章圖形程序設計第8章圖形程序設計

8.1知識要點

8.2習題與解答

8.3實訓指導

8.4測驗題8.1知識要點1、圖形設計基礎(1)坐標系統(tǒng)VisualBasic用坐標來描述一個像素位于存放他的容器內的位置。而每個容器都有自己的一個坐標系,構成一個坐標系要包含三個基本要素,那就是:坐標原點、坐標度量單位和坐標軸的長度和方向。缺省情況下,坐標系的坐標原點在對象的左上角,橫向向右為X軸的正方向,縱向向下為Y軸的正方向。(2)圖形層VisualBasic在構造圖形時,在三個不同的屏幕層次上放置可視的組成部分。工具箱中除了標簽、直線、形狀外的控件放在最上層,標簽、直線和形狀控件放在中間層,最下層放置的是由圖形方法所繪制的圖形。同一圖形層上控件對象的排列順序稱為Z-順序。調整Z-順序的方法有兩中:①在窗體設計階段時,選中要調整的控件,單擊“格式”菜單,選擇“順序”菜單項,再選擇“置前”或“置后”命令即可。②代碼中使用Zorder方法。Zorder方法的語法格式為:[Object.]Zorder[position]其中:Object為要調整的窗體或其他控件對象。Position為一整數,用于指出一個控件相對于另一個控件的位置。如果Position為0或被省略,則Object位于Z-順序的前面;如果Position為1,則Object位于Z-順序的后面。(3)顏色設置函數VisualBasic提供了兩個選擇顏色的函數RGB()和QBColor()。①RGB()函數RGB()函數通過紅、綠、藍三種基本色的混合來生成某種顏色,其語法格式為:

RGB(red,green,blue)其中,red、green和blue三個參數都是必要參數,分別表示紅、綠和藍色的顏色成分,它們的取值范圍都是0~255間的整數。2、圖形控件

VB提供了直線控件(Line)和形狀控件(Shape)兩種常用的圖形控件。用戶可以使用圖形控件方便地完成規(guī)則幾何圖形的繪制。(1)直線控件直線控件(Line)可以用來在窗體或圖片框上畫直線。分別用x1,y1和x2,y2來返回或控制線條起始點和終止點在X軸和Y軸方向上的位置。(2)形狀控件形狀控件(Shape)可以用來畫矩形、正方形、橢圓、圓、圓角矩形及圓角正方形,6種圖形分別對應其Shape屬性的0~5的6個屬性值。3、圖形方法

VB提供了繪制點、線、圓等方法,利用它們可以使繪制圖形更加靈活。(1)Line方法Line方法的基本功能是在窗體或圖片框上畫直線和矩形。此外,利用Line方法還可以繪制出各種曲線,因為任何曲線都可以近似地看成是由無數條小線段組成的。Line方法的語法格式為:[對象.]Line[[Step](x1,y1)]-[Step](x2,y2)[,顏色][,B][F]其中:對象可以是窗體或圖片框,缺省為窗體。(x1,y1)和(x2,y2)分別表示線段的起始坐標和終止坐標。(3)Pset與Point方法①Pset方法Pset方法的基本功能是在窗體或圖片框上繪制點。它的語法格式如下:[對象.]Pset[Step](x,y)[,color]其中:對象是調用Pset方法的對象名稱。(x,y)用來指定點的水平和垂直坐標。

Color用來指定點的顏色。②Point方法Point方法用來返回窗體或圖片框上指定位置的顏色值,用長整型數據來表示。它的語法格式如下:[對象.]Point(x,y)其中:對象和(x,y)的用法和Pset方法相同。③PaintPicture方法PaintPicture方法可以訪問內置操作系統(tǒng)中的位塊傳送機制快速地操作像素,具體來說PaintPicture方法可以在窗體、圖片框或打印機上繪制文件的內容(圖形文件的格式可以是“.bmp”、“.wmf”、“.emf”、“.cur”、“.ico”或“.dib”)。PaintPicture方法的語法格式如下:[對象.]PaintPicturepicture,x1,y1,width1,height1,x2,y2,width2,height2,opcodewidth1,height1分別指定picture的目標寬度和目標高度。x2,y2指定picture內剪貼區(qū)的位置,即傳送圖形矩形的左上角坐標。width2,height2指定picture內剪貼區(qū)的寬度和高度,從而確定傳送圖形的大小。第8章圖形程序設計

8.1知識要點

8.2習題與解答

8.3實訓指導

8.4測驗題8.2習題與解答1、描述VB缺省的坐標系,用戶自定義坐標系的方法有哪些?答案:缺省情況下,坐標系的坐標原點在對象的左上角,橫向向右為X軸的正方向,縱向向下為Y軸的正方向。用戶可以通過兩種方法來自行定義坐標系。一種是通過修改ScaleTop、ScaleLeft、ScaleWidth和ScaleHeight的屬性值建立坐標系;另一種是使用Scale方法來設置坐標系。

3、熟悉利用Line畫圖的方法,說出下面幾個語句的含義。(1)Form1.Line(1000,1000)-(3000,3000)(2)Form1.Line-(3000,3000),RGB(255,0,0)(3)Form1.LineStep(1000,1000)-(3000,3000)(4)Form1.Line(1000,1000)-(3000,3000),RGB(255,0,0),B(5)Form1.Line(1000,1000)-(3000,3000),RGB(255,0,0),BF答案:略(讀者可以自行上機驗證)。4、熟悉利用Circle畫圖的方法,說出下面幾個語句的含義(pi=3.1415926)。(1)Form1.CircleStep(2000,2000),1000,QBColor(1)(2)Form1.Circle(2000,2000),1000,,3*pi/2,pi/3(3)Form1.Circle(2000,2000),1000,,3*pi/2,,0.5(4)Form1.Circle(2000,2000),1000,QBColor(2),-3*pi/2,-pi答案:略(讀者可以自行上機驗證)。5、說出Pset方法和Point方法的基本功能和使用方法。

答案:Pset方法的基本功能是在窗體或圖片框上繪制點;Point方法用來返回窗體或圖片框上指定位置的顏色值,用長整型數據來表示。(使用方法略)6、怎樣通過PaintPicture方法實現像素操作。答案:PaintPicture方法可以訪問內置操作系統(tǒng)中的位塊傳送機制快速地操作像素。PaintPicture方法常常用來從一個窗體或圖片框控件中向另一個對象復制一個矩形區(qū)域的像素。

continue…第8章圖形程序設計

8.1知識要點

8.2習題與解答

8.3實訓指導

8.4測驗題8.3實訓指導8.3.1技能訓練目的☆掌握建立用戶自定義坐標系的方法?!钫莆罩本€和形狀控件的使用方法?!钫莆绽肔ine方法在窗體或圖片框上畫直線和矩形的技巧?!钫莆绽肅ircle方法在窗體或圖片框上繪制圓、橢圓或弧等圖形的技巧?!钫莆绽肞set與Point方法對點操作的方法?!钫莆绽肞aintPicture方法實現像素操作的方法。參考代碼:'兩個小球相向而行PrivateSubTimer1_Timer()IfShape1.Left>Shape2.Left+Shape2.Width+400ThenShape1.Left=Shape1.Left-200Shape2.Left=Shape2.Left+200ElseTimer2.Enabled=TrueTimer1.Enabled=FalseEndIfEndSub'兩個小球背向而行PrivateSubTimer2_Timer()Shape1.Left=Shape1.Left+200Shape2.Left=Shape2.Left-200EndSub【實訓8.2】在窗體上畫出從同一起點出發(fā)的100條長度不等的射線,如圖8-2所示。圖8-2參考代碼:PrivateSubForm_Click()DimiAsIntegerForm1.ClsFori=1To100RandomizeCurrentX=Rnd()*Form1.ScaleWidthCurrentY=Rnd()*Form1.ScaleHeightForm1.Line-(0,0)NextiEndSub【實訓8.3】在窗體上畫出螺旋線,如圖8-3所示。圖8-3參考代碼:PrivateSubForm_Paint()Dimpiassinglepi=4*Atn(1)Form1.Scale(-60,60)-(60,-60)Form1.Line(0,60)-(0,-60)Form1.Line(-60,0)-(60,0)Form1.Circle(0,0),5,,pi,2*piForm1.Circle(-3,0),8,,0,piForm1.Circle(0,0),11,,pi,2*piForm1.Circle(-3,0),14,,0,piForm1.Circle(0,0),17,,pi,2*piForm1.Circle(-3,0),20,,0,piForm1.Circle(0,0),23,,pi,2*piForm1.Circle(-3,0),26,,0,piForm1.Circle(0,0),29,,pi,2*piEndSub【實訓8.4】窗體上兩個按鈕的功能分別是在圖片框里畫出同心圓和同心矩形,如圖8-4和圖8-5所示。提示:在窗體上添加圖片框(picture1)、兩個命令按鈕(command1和command2),命令按鈕的Caption屬性分別設置為“同心圓”和“同心矩形”。圖8-4圖8-5參考代碼:'畫同心圓PrivateSubCommand1_Click()Form1.Caption="同心圓"Picture1.ClsPicture1.Scale(-100,100)-(100,-100)r=10Fori=1To10Picture1.Circle(0,0),r+5*iNextiEndSub'畫同心矩形PrivateSubCommand2_Click()Form1.Caption="同心矩形"Picture1.ClsPicture1.Scale(-100,100)-(100,-100)r=10Fori=1To10r=r+5*iPicture1.Line(r+5,r)-(-r-5,-r),,BNextiEndSub【實訓8.5】分別利用點和小線段模擬y=(sin(x)+cos(2x))/2數學函數曲線,如圖8-6所示。圖8-6參考代碼:1、利用點實現PrivateSubForm_Paint()DimiAsSingle,piAsDoublepi=4*Atn(1)Form1.Scale(-2*pi,1)-(2*pi,-1)Form1.Line(-2*pi,0)-(2*pi,0)Form1.Line(0,1)-(0,-1)Fori=-2*piTo2*piStep0.01Form1.PSet(i,(Sin(i)+Cos(2*i))/2)NextiEndSub2、利用小線段實現PrivateSubForm_Paint()DimiAsSingle,piAsDoublepi=4*Atn(1)'計算圓周率Form1.Scale(-2*pi,1)-(2*pi,-1)'建立新坐標系Form1.Line(-2*pi,0)-(2*pi,0)'繪制x軸Form1.Line(0,1)-(0,-1)'繪制y軸CurrentX=-2*piCurrentY=(Sin(CurrentX)+Cos(2*CurrentX))/2Fori=-2*piTo2*piStep0.01'用小線段來模擬曲線Form1.Line-(i,(Sin(i)+Cos(2*i))/2)NextiEndSub【實訓8.6】利用point方法把標簽中的文本復制到窗體上,如圖8-7所示。提示:在窗體上添加圖片框(picture1),設置合適的字體,AutoRedraw屬性設置為“true”。圖8-7參考代碼:PrivateSubForm_Activate()Picture1.Print"我愛北京天安門!"圖8-7EndSubPrivateSubForm_Click()Form1.Scale(0,0)-(500,500)Picture1.Scale(0,0)-(500,500)Fori=1To500Forj=1To500Form1.PSet(i,j),Picture1.Point(i,j)NextjNextiEndSub【實訓8.7】利用學過的畫圖方法畫出顏色漸變背景,如圖8-8所示。圖8-8參考代碼:PrivateSubForm_Paint()DimiAsInteger,xAsSingle,yAsSingle,hAsSinglex=Form1.ScaleWidthy=Form1.ScaleHeighth=255/yFori=0ToyForm1.Line(0,i)-(x,i),RGB(i*h,i*h,255)NextiEndSub讀者可以分析下面代碼,然后上機驗證代碼所產生的效果。PrivateSubForm_Paint()DimxAsSingle,yAsSingle,tAsSingleDimiAsSingleForm1.DrawWidth=2x=Form1.ScaleWidthy=Form1.ScaleHeightIfx>yThent=y\2Elset=x\2Form1.ScaleMode=1Form1.DrawStyle=0Form1.FillStyle=1Fori=0TotForm1.Line(i,i)-(x-i,y-i),RGB(0,0,255-(i*255)\t),BFNextiEndSub【實訓8.8】模擬帶有時針、分針、秒針及刻度的時鐘,如圖8-9所示。提示:在窗體上添加時鐘控件(timer1)、直線控件數組(Line1,只畫出line1(0),長度、位置任意)。圖8-9參考代碼:OptionExplicitPrivateSubForm_Load()Timer1.Interval=1000Form1.Width=4000Form1.Height=4000Form1.Left=Screen.Width\2-2000Form1.Top=(Screen.Height-Height)\2EndSubPrivateSubForm_Resize()Dimi,AngleStaticflagAsBooleanIfflag=FalseThenflag=True'畫出表盤12個點和時、分、秒共15個LineFori=0To14Ifi>0ThenLoadLine1(i)Line1(i).Visible=TrueLine1(i).BorderWidth=5Line1(i).BorderColor=RGB(0,128,0)'設置Line的粗細和顏色

NextiEndIfScale(-1,1)-(1,-1)Fori=0To14Angle=i*2*Atn(1)/3Line1(i).X1=0.9*Cos(Angle)Line1(i).Y1=0.9*Sin(Angle)Line1(i).X2=Cos(Angle)Line1(i).Y2=Sin(Angle)NextiEndSubPrivateSubtimer1_Timer()ConstHH=0ConstMH=13ConstSH=14DimAngleAngle=0.5236*(15-(Hour(Now)+Minute(Now)/60))'設置時針

Line1(HH).X1=0Line1(HH).Y1=0Line1(HH).X2=0.3*Cos(Angle)Line1(HH).Y2=0.3*Sin(Angle)Angle=0.1047*(75-(Minute(Now)+Second(Now)/60))'設置分針

Line1(MH).BorderWidth=3Line1(MH).X1=0Line1(MH).Y1=0Line1(MH).X2=0.7*Cos(Angle)Line1(MH).Y2=0.7*Sin(Angle)Angle=0.1047*(75-Second(Now))'設置秒針

Line1(SH).BorderWidth=1Line1(SH).X1=0Line1(SH).Y1=0Line1(SH).X2=0.8*Cos(Angle)Line1(SH).Y2=0.8*Sin(Angle)Form1.Caption=Str(Date+Time())'窗口顯示精確的日期和數字化的時間EndSub第8章圖形程序設計

8.1知識要點

8.2習題與解答

8.3實訓指導

8.4測驗題8.4測驗題8.4.1選擇題1.下面幾個控件中能充當容器的控件是

。

A.圖像框B.標簽C.圖片框D.文本框答案:C2.下列關于坐標系的說法錯誤的是

。

A.只有正方形的窗體才可以用Scale方法自定義坐標系。

B.若要在窗體上畫出規(guī)則的圖形,必須先自定義坐標系。C.在一段代碼中只能建立一次坐標系,否則會產生沖突。D.Scale方法不是設置坐標系的唯一方法。答案:D3.若要在窗體上畫一個扇形,必須使用到的方法是

。A.LineB.CircleC.PsetD.Line和Circle答案:B4.若要改變坐標系的度量單位,應通過來

修改。A.Scale方法B.ScaleWidth屬性

C.DrawWidth屬性D.ScaleMode屬性答案:D5.代碼“form1.line–(100,200)”將繪制出

。A.從坐標(0,0)至坐標(100,200)的一條線段。B.從窗體form1的中心坐標點至坐標(100,200)的一條線段。C.從坐標(CurrenetX,CurrentY)至坐標(100,200)的一條線段。D.產生語法錯誤提示。答案:C6.通過使用Line方法不能繪制出的圖形是

。A.扇形B.線段C.矩形D.三角函數圖像答案:A7.代碼“Form1.Circle(2000,2000),800,,1,3,2”將繪制出

。A.扇形B.橢圓弧C.圓形D.圓弧答案:B8.關于Line方法的B和F參數使用方法敘述正確的是

。A.B和F參數可以單獨使用,沒有限制。B.若要使用B,則必須使用F。C.若要使用F,則必須使用B。D.B和參數F連續(xù)使用時,必須用逗號分開。答案:C9.如果改變了窗體的DrawWidth屬性,將對

產生影響。

A.Line、Circle和Pset方法B.Line、Circle、Pset和Point方法C.Line和Shape控件D.Line、Circle、Pset方法和Line和Shape控件答案:A10.代碼“Form1.cls”將不能清除

。A.窗體上由Print方法產生的文字。B.窗體上由Line、Circle、Pset方法繪制的圖形。C.窗體上由圖形控件構成的圖形。D.窗體上由PaintPicture方法復制的圖形。答案:C11.設置Shape控件的

屬性可以改變圖形的形狀。

A.ShapeB.FillStyleC.DrawStyleD.BorderStyle答案:A12.若要使窗體在被其他窗體覆蓋后,再次顯現時,能重新繪制窗體上的所有圖形,應該令

屬性為True。A.WidowStateB.AutoRedrawC.DrawModeD.DrawStyle答案:B8.4.2填空題1.使用Line方法畫線段后,CurrentX和CurrrenetY的值分別是(1)和(2)。答案:(1)線段終點的橫坐標(2)線段終點的縱坐標2.當我們使用Circle方法畫弧線時,從圓弧起點到鐘點采用(3)時針方向。答案:(3)逆時針3.執(zhí)行代碼Form1.Scale(-150,200)-(200,-150)后,Form1.ScaleLeft=

(4),Form1.ScaleTop=

(5),Form1.ScaleWidth=

(6),Form1.ScaleHeight=

(7)。答案:(4)-150(5)200(6)350(7)-350

4.在下面程序的空白處填寫合適的代碼,實現如下功能。單擊“畫圓”按鈕(Command1),在窗體上隨機畫出100個不同顏色的半徑最大為300的圓形(半徑和顏色具有隨機性);單擊“清除”按鈕(Command2),清除窗體上所有圖形;單擊“結束”按鈕(Command3),退出程序。如圖8-10所示。圖8-10PrivateSubForm_Load()Form1.BackColor=vbWhiteEndSubPrivateSubCommand1_Click()DimxAsInteger,yAsInteger,rAsInteger,iAsIntegerFori=1To100Randomizex=Rnd*Form1.ScaleWidth

(8)

r=300*RndForm1.Circle(x,y),r,RGB(Rnd*255,Rnd*255,Rnd*255)圖8-10

(9)EndSubPrivateSubCommand2_Click()

(10)EndSubPrivateSubCommand3_Click()EndEndSub答案:(8)y=Rnd*Form1.ScaleHeight(9)Nexti(10)Form1.Cls

5.在下面程序的空白處填寫合適的代碼,實現如下功能。繪制如圖8-11所示的圖形。當窗體大小發(fā)生變化時,圖形的大小也隨著窗體一同調整。圖8-11PrivateSub

(11)Form1.Scale(-100,100)-(100,-100)Form1.DrawWidth=2Form1.ForeColor=vbRed

(12)(13)(14)EndSubPrivateSubForm_Resize()Form1.Cls

(15)EndSub

答案:(11)Form_Paint()(12)Form1.Line(-100,100)-(100,-100)(13)Form1.Line(-100,-100)-(100,100)(14)Form1.Line(-50,50)-(50,-50),,B(15)CallForm_Paint8.4.3編程題1.畫出變化的月亮和滿天星。程序運行后在藍色窗體上動態(tài)顯示100個黃色的“★”,月亮從圓

溫馨提示

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

評論

0/150

提交評論