《圖形圖像處理》PPT課件.ppt
第11章圖形圖像處理,賀向前,主要內(nèi)容,計(jì)算機(jī)坐標(biāo)系統(tǒng) 常用作圖方法 作圖相關(guān)屬性 作圖的相關(guān)函數(shù),計(jì)算機(jī)坐標(biāo)系統(tǒng),顯示器坐標(biāo)系統(tǒng),計(jì)算機(jī)坐標(biāo)系統(tǒng),窗口等容器的坐標(biāo)系統(tǒng),計(jì)算機(jī)坐標(biāo)系統(tǒng),坐標(biāo)系統(tǒng)的度量單位 object.ScaleMode = value,計(jì)算機(jī)坐標(biāo)系統(tǒng),自定義度量單位 Object.ScaleWidth=w 把對象的寬度定義為有w個(gè)刻度單位 Object.ScaleHight=h 把對象的高度定義為有h個(gè)刻度單位 Object.ScaleLeft=X 當(dāng)X0,對象的坐標(biāo)系統(tǒng)的橫坐標(biāo)向左平移X個(gè)度量單位 當(dāng)X0,對象的坐標(biāo)系統(tǒng)的縱坐標(biāo)向上平移Y個(gè)度量單位 當(dāng)Y<0,對象的坐標(biāo)系統(tǒng)的縱坐標(biāo)向下平移Y個(gè)度量單位,計(jì)算機(jī)坐標(biāo)系統(tǒng),自定義度量單位 Object.Scale(x1,y1)-(x2,y2) (x1,y1):新坐標(biāo)系下對象左上角的坐標(biāo) (x2,y2):新坐標(biāo)系下對象右下角的坐標(biāo),計(jì)算機(jī)坐標(biāo)系統(tǒng),例 把窗體的坐標(biāo)系統(tǒng)的長寬分別定義為100個(gè)單位,坐標(biāo)原點(diǎn)移動(dòng)到窗體的中央,Private Sub Form_Load() Me.AutoRedraw = True Me.ScaleWidth = 100 Me.ScaleHeight = 100 Me.ScaleLeft = -50 Me.ScaleTop = -50 Me.Line (-50, 0)-(50, 0) Me.Line (0, -50)-(0, 50) End Sub,計(jì)算機(jī)坐標(biāo)系統(tǒng),把窗體的坐標(biāo)系統(tǒng)的長寬分別定義為100個(gè)單位,坐標(biāo)原點(diǎn)移動(dòng)到窗體的中央,Private Sub Form_Load() Me.AutoRedraw = True Me.Scale(-50,-50)-(50,50) Me.Line (-50, 0)-(50, 0) Me.Line (0, -50)-(0, 50) End Sub,計(jì)算機(jī)坐標(biāo)系統(tǒng),如何把上例中的縱坐標(biāo)的方向設(shè)置為向上?并標(biāo)出如圖所示的原點(diǎn)和X、Y,常用作圖方法,畫線Line方法 Object.Line(x1,y1)-(x2,y2),Color 畫矩形Line方法 Object.Line(x1,y1)-(x2,y2),Color,BF 如果沒有使用參數(shù)F,則填充模式和填充顏色分別由Object的FillStyle和FillColor決定,否則畫一個(gè)實(shí)心的矩形,邊框線顏色和填充顏色均由Color決定;,例 畫出5條長度相同平行的線段,Option Explicit Private Sub Form_Click() Dim i% For i = 1 To 5 Line (500, 500 * i + 100)-(2500, 500 * i + 100) Next i End Sub,例 畫出5個(gè)同心矩形,Option Explicit Private Sub Form_Click() Dim i%, x1%, y1%, x2%, y2% Me.Scale (-50, 50)-(50, -50) Me.Line (-50, 0)-(50, 0) Me.Line (0, 50)-(0, -50) For i = 1 To 5 x1 = -50 + 5 * i y1 = 50 - 5 * i x2 = 50 - 5 * i y2 = -50 + 5 * i Me.Line (x1, y1)-(x2, y2), , B Next i End Sub,例:畫出如圖所示圖形,Private Sub Form_Click() Dim i%, j%, t#, N%, r#, xi#, yi#, xj#, yj# Const pi# = 3.14159265358979 N = 15: r = 3 t = 2 * pi / N For i = 1 To N For j = 1 To N If i j Then xi = r * Cos(i * t) + 0 yi = r * Sin(i * t) + 0 xj = r * Cos(j * t) + 0 yj = r * Sin(j * t) + 0 Line (xi, yi)-(xj, yj) End If Next j Next i End Sub,Private Sub Form_Load() Me.Width = Me.Height Me.Scale (-4, 4)-(4, -4) End Sub,Line方法中的Step關(guān)鍵字,Private Sub Form_Load() Me.AutoRedraw = True Me.Scale (-200, 200)-(200, -200) Dim i% Me.CurrentX = -180 Me.CurrentY = 150 For i = 1 To 9 Me.Line -Step(20, 0) Me.Line -Step(0, -200) Me.Line -Step(20, 0) Me.Line -Step(0, 200) Next i End Sub,常用作圖方法,畫圓Circle方法 Object.Circle(x,y),R,Color,Start,End,Aspect 按逆時(shí)針方向畫圓 Start,End為畫圓弧起始和結(jié)束的弧度。如果為負(fù)數(shù),則先要畫一條半徑,然后把Start,End處理成正數(shù); Aspect決定畫一個(gè)橢圓的縱橫坐標(biāo)比(為1畫圓),例 畫出5個(gè)同心圓,Option Explicit Private Sub Form_Click() Dim i%, x%, y% x = Me.ScaleWidth / 2 y = Me.ScaleHeight / 2 Me.ScaleLeft = -x Me.ScaleTop = -y Me.Line (-x, 0)-(x, 0) Me.Line (0, y)-(0, -y) For i = 1 To 5 Me.Circle (0, 0), 200 + 200 * i Next i End Sub,例:行星繞太陽轉(zhuǎn),Const PI# = 3.14159265358979 Private Sub Form_Click() Me.Scale (-4000, 2000)-(4000, -2000) Me.FillStyle = 0 Me.FillColor = RGB(255, 255, 0) Me.Circle (0, 0), 400, vbRed Me.FillStyle = 1 Me.Circle (0, 0), 3200, vbBlue, , , 0.5 Me.DrawMode = 7 Timer1.Enabled = True Me.FillStyle = 0 End Sub Private Sub Form_Load() Me.Height = 2700 Me.Width = 4800 Timer1.Interval = 10 Timer1.Enabled = False End Sub,Private Sub Timer1_Timer() Static alfa#, flag, x#, y# flag = Not flag If flag Then alfa = alfa + PI / 10 If alfa 2 * PI Then alfa = 0 x = 3200 * Cos(alfa) y = 1600 * Sin(alfa) Me.Circle (x, y), 300 End Sub,常用作圖方法,畫點(diǎn)PSet方法 Object.PSet (X,Y),Col Cls方法 Move方法,例9.5 畫出2個(gè)周期的正弦波形,Option Explicit Private Sub Form_Click() Dim i%, x#, y# Const pi# = 3.14159265358979 Me.Scale (-2 * pi, 1.2)-(2 * pi, -1.2) Me.Line (-2 * pi, 0)-(2 * pi, 0) Me.Line (0, 1.2)-(0, -1.2) For x = -2 * pi To 2 * pi Step 0.01 y = Sin(x) Me.PSet (x, y) Next x End Sub,例:畫出如圖所示的圖形,Private Sub Form_Click() Dim a#, r#, x#, y# Const pi# = 3.14159265358979 r = 4 For a = 0 To 2 * pi Step 0.001 x = r * Cos(4 * a) * Cos(a) y = r * Cos(4 * a) * Sin(a) Me.PSet (x, y) Next a End Sub Private Sub Form_Load() Me.Width = Me.Height Me.Scale (-4, 4)-(4, -4) End Sub,常用作圖方法,PaintPicture方法 picDes.PaintPicture picSrc.Picture, _ picDes.Left, picDes.Top, _ picDes.Width, picDes.Height, _ picSrc.Left, picSrc.Top, _ picSrc.Width, picSrc.Height, vbSrcCopy,作圖相關(guān)屬性,CurrentX, CurrentY屬性 設(shè)置光標(biāo)的坐標(biāo)位置 object. CurrentX = number object. CurrentY = number,作圖相關(guān)屬性,DrawStyle 決定圖形方法輸出的線型的樣式 object.DrawStyle = number number 的設(shè)置值為:,例 畫出7條長度相同平行的線段,Option Explicit Private Sub Form_Click() Dim i% Me.Scale (-50, -50)-(50, 50) For i = 0 To 6 Me.DrawStyle = i Me.Line (-40, -40 + 5 * i)-(40, -40 + 5 * i) Next i End Sub,作圖相關(guān)屬性,DrawWidth 設(shè)置圖形方法輸出的線寬 object.DrawWidth = size,Option Explicit Private Sub Form_Click() Dim i% Me.Scale (-50, -50)-(50, 50) For i = 1 To 12 Me.DrawWidth = i Me.Line (-40, -40 + 6 * i)-(40, -40 + 6 * i) Next i End Sub,作圖相關(guān)屬性,FillStyle 設(shè)置填充模式 object.FillStyle = number,例畫出8個(gè)并排的圓,Option Explicit Private Sub Form_Click() Dim i% For i = 0 To 7 Me.FillStyle = i Me.Circle (500 + 800 * i, 800), 400 Next i End Sub,作圖相關(guān)函數(shù),LoadPicture(“FileName”) SavePicture picture, “FileName” RGB(0-255,0-255,0-255) QBColor(0-15),Thanks for your attendance,