Visual Basic程序設(shè)計應(yīng)用教程課件第9章 程序設(shè)計基本結(jié)構(gòu)_第1頁
Visual Basic程序設(shè)計應(yīng)用教程課件第9章 程序設(shè)計基本結(jié)構(gòu)_第2頁
Visual Basic程序設(shè)計應(yīng)用教程課件第9章 程序設(shè)計基本結(jié)構(gòu)_第3頁
Visual Basic程序設(shè)計應(yīng)用教程課件第9章 程序設(shè)計基本結(jié)構(gòu)_第4頁
Visual Basic程序設(shè)計應(yīng)用教程課件第9章 程序設(shè)計基本結(jié)構(gòu)_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第9章繪制圖形

VisualBasic為用戶提供了內(nèi)容豐富、功能強大的圖形、圖像處理功能。在VisualBasic中,已有的圖形、圖像文件通常在窗體、圖片框、圖像框等控件中顯示;繪圖采用兩種方法:一是利用VisualBasic提供的Line和Shape控件繪制一般的幾何圖形;二是使用VisualBasic提供的繪圖方法,如畫點Pset方法、畫線Line方法、畫圓Circle方法等,用于在窗體、圖片框等容器控件中直接繪制圖形。

9.1VisualBasic的坐標(biāo)系統(tǒng)9.2顏色9.3常用繪圖控件9.4繪圖方法第9章繪制圖形

9.1VisualBasic的坐標(biāo)系統(tǒng)

坐標(biāo)系統(tǒng)是繪制各種圖形的基礎(chǔ)。在VisualBasic中,每個對象都是定位于存放它的容器內(nèi)。例如,窗體對象放置在屏幕內(nèi),屏幕是窗體的容器;同樣窗體是放置控件對象的容器;框架控件和這一章要介紹的圖片框等控件都可作為其他控件的容器。對象在容器中的定位需要使用坐標(biāo)系統(tǒng),在VisualBasic中坐標(biāo)系統(tǒng)也稱為對象坐標(biāo)系統(tǒng)。屏幕有自己的坐標(biāo)系統(tǒng),用于窗體的定位;每個窗體也都有自己的坐標(biāo)系統(tǒng),用于定位窗體上的控件。VisualBasic的坐標(biāo)系統(tǒng)可分為:默認(rèn)坐標(biāo)系統(tǒng)和用戶自定義坐標(biāo)系統(tǒng)9.1VisualBasic的坐標(biāo)系統(tǒng)9.1.1默認(rèn)坐標(biāo)系統(tǒng)9.1.2坐標(biāo)度量單位9.1.3用戶自定義坐標(biāo)系統(tǒng)9.1.1默認(rèn)坐標(biāo)系統(tǒng)容器對象的默認(rèn)坐標(biāo)系統(tǒng)中,左上角坐標(biāo)為(0,0),沿著水平方向向右移動、垂直方向向下移動時,坐標(biāo)值增加。放置在容器中的對象,它的Left和Top屬性指定了該對象的左上角距坐標(biāo)系原點的水平方向和垂直方向的距離。如圖9-1所示。

需要說明的是,只能在窗體或圖片框上繪制圖形,窗體的容器是系統(tǒng)對象Screen(屏幕),因此窗體的Left和Top屬性值,是相對于屏幕坐標(biāo)系原點(左上角)的水平方向和垂直方向的距離;而窗體又是其他控件的容器,所以窗體中各控件的Left和Top屬性值,都是相對于窗體坐標(biāo)系原點(左上角)的水平方向和垂直方向的距離。圖9-1窗體的坐標(biāo)系統(tǒng)9.1.2坐標(biāo)度量單位

VisualBasic使用的坐標(biāo)度量單位共有8種,見表9-1。系統(tǒng)默認(rèn)的度量單位是緹(Twips),1厘米=576緹。用戶根據(jù)需要,可以選擇系統(tǒng)提供的其他標(biāo)準(zhǔn)度量單位。通過設(shè)置窗體或圖片框的ScaleMode屬性定義度量單位,在程序的界面設(shè)計階段,在屬性窗口選中ScaleMode屬性并單擊其右側(cè)的向下箭頭按鈕,將顯示如圖9-2所示的下拉列表,可以從中選擇所需要的度量單位。9.1.2坐標(biāo)度量單位ScaleMode屬性值常量名說明0VbUser用戶自定義類型。若用戶使用ScaleWidth、ScaleHeight、ScaleTop、ScaleLeft屬性設(shè)置坐標(biāo)系統(tǒng),VisualBasic會自動設(shè)置ScaleMode屬性值為01VbTwips默認(rèn)值,以Twip為單位。1英寸=1440Twip2VbPoints以磅(Point)為單位,1英寸=72磅3VbPixels像素(Pixels),即顯示器分辨率的最小單位4VbCharacters字符,1個字符寬度=120Twip,1個字符高度=240Twip5VbInches英寸6VbMillimeters毫米7VbCentimeters厘米

說明: (1)上表中,除了0和3外,其余度量單位設(shè)置均可用于打印機。

(2)ScaleMode屬性可以在屬性窗口設(shè)置,也可以通過程序代碼設(shè)置。例如,F(xiàn)orm1.ScaleMode=5'窗體坐標(biāo)系統(tǒng)以英寸為單位Picture1.ScaleMode=7'圖片框坐標(biāo)系統(tǒng)以厘米為單位9.1.2坐標(biāo)度量單位圖9-2度量單位選擇9.1.3用戶自定義坐標(biāo)系統(tǒng)

用戶自定義坐標(biāo)系統(tǒng)指的是用戶自己定義容器中的對象(如屏幕上的窗體,窗體上的圖片框)本身的坐標(biāo)系,包括坐標(biāo)原點和刻度。容器中的對象在容器中的位置是由其Left和Top屬性決定的。

容器中的對象本身的坐標(biāo)系,默認(rèn)對象的左上角為原點(0,0),坐標(biāo)值沿水平方向向右增加,沿垂直方向向下增加,并且刻度單位都是規(guī)范的。VisualBasic允許用戶自定義坐標(biāo)系統(tǒng),包括原點的位置、軸線方向和軸線刻度。9.1.3用戶自定義坐標(biāo)系統(tǒng)(1).用ScaleLeft、ScaleTop、ScaleHeight和ScaleWidth屬性自定義坐標(biāo)系統(tǒng)(2).用Scale方法定義坐標(biāo)系統(tǒng)9.1.3(1)用ScaleLeft、ScaleTop、ScaleHeight和ScaleWidth屬性自定義坐標(biāo)系統(tǒng)

ScaleLeft和ScaleTop屬性用于設(shè)置和返回窗體或圖片框左上角的坐標(biāo)值,ScaleLeft是X坐標(biāo)的最小值。

ScaleHeight和ScaleWidth用于設(shè)置和返回窗體或圖片框內(nèi)部寬度和高度等分份數(shù)。這里的寬度和高度是指除去了邊界和標(biāo)題行后的凈寬度和凈高度(內(nèi)部刻度),即用戶自定義的坐標(biāo)刻度單位。X坐標(biāo)的最大值為ScaleLeft+ScaleWidth。9.1.3(1)用ScaleLeft、ScaleTop、ScaleHeight和ScaleWidth屬性自定義坐標(biāo)系統(tǒng)上面四個屬性既可以是正數(shù),也可以是負數(shù)。如果ScaleLeft和ScaleTop屬性值為0,則自定義坐標(biāo)系統(tǒng)的原點仍位于對象的左上角;如果ScaleLeft大于0,則Y軸沿X軸向左移;如果ScaleLeft小于0,則Y軸沿X軸向右移;如果ScaleTop大于0,則X軸沿Y軸向上移;如果ScaleTop小于0,則X軸沿Y軸向下移。同時,如果ScaleWidth小于0,則X軸的正向向左;如果ScaleHeight小于0,則Y軸的正向向上。9.1.3(1)用ScaleLeft、ScaleTop、ScaleHeight和ScaleWidth屬性自定義坐標(biāo)系統(tǒng)

例如,設(shè)置窗體左上角的坐標(biāo)為(100,150),右下角的坐標(biāo)為(300,220),則可以用如下代碼: Form1.ScaleTop=150 Form1.ScaleLeft=100 Form1.ScaleWidth=200 Form1.ScaleHeight=70

定義的坐標(biāo)系如圖9-3所示。

下面的代碼可將窗體坐標(biāo)原點定義在左下角,向上向右時坐標(biāo)值增加,與數(shù)學(xué)中的坐標(biāo)系一致,右上角的坐標(biāo)為(120,100),更符合繪制各種曲線圖的習(xí)慣。其坐標(biāo)系如圖9-4所示。 Form1.ScaleLeft=20 Form1.ScaleTop=100 Form1.ScaleWidth=100 Form1.ScaleHeight=-100圖9-3用戶自定義坐標(biāo)系統(tǒng)示例圖9-4ScaleHeight屬性為負值9.1.3(2)用Scale方法定義坐標(biāo)系統(tǒng)

Scale方法是用戶定義對象坐標(biāo)系統(tǒng)的實用方法,用它可以代替介紹的用ScaleLeft、ScaleTop、ScaleWidth和ScaleHeight屬性定義坐標(biāo)系統(tǒng)。使用此方法可以直接定義對象左上角坐標(biāo)和右下角坐標(biāo)值,一旦這兩個對角坐標(biāo)確定了,則另外兩個角的坐標(biāo)值也就唯一確定。

Scale方法定義坐標(biāo)系統(tǒng)格式如下:

[<對象名>.]Scale[(x1,y1)-(x2,y2)]9.1.3(2)用Scale方法定義坐標(biāo)系統(tǒng)

[<對象名>.]Scale[(x1,y1)-(x2,y2)](1)對象名為窗體或圖片框名稱,默認(rèn)為窗體。(2)如果Scale后面不帶任何參數(shù),則使用默認(rèn)坐標(biāo)系統(tǒng)(x1,y1)和(x2,y2)分別為窗體或圖片框左上角和右下角的坐標(biāo)。這4個坐標(biāo)參數(shù)和前面的4個屬性的對應(yīng)關(guān)系如下: ScaleLeft=x1 ScaleTop=y1 ScaleWidth=x2-x1 ScaleHeight=y2-y1

例如,下面的代碼可將坐標(biāo)原點設(shè)置在圖片框Picture1的中心,其坐標(biāo)位置如圖9-5所示。

PrivateSubForm_Load() Picture1.ScaleLeft=-15 Picture1.ScaleTop=-25 Picture1.ScaleWidth=30 Picture1.ScaleHeight=50 EndSub

如果使用Scale方法,代碼如下:

PrivateSubForm_Load() Picture1.Scale(-15,-25)-(15,25) EndSub圖9-5坐標(biāo)點(x1,y1)和(x2,y2)示意圖9.1.3(2)用Scale方法定義坐標(biāo)系統(tǒng)9.2顏色

在設(shè)計階段通過屬性的設(shè)置可以控制窗體或控件的顏色。如果要在程序的運行期間設(shè)置對象的顏色,就必須使用顏色參數(shù)。 在程序運行期間指定顏色參數(shù)值有如下4種方式:

9.2.1RGB函數(shù)

9.2.2QBColor函數(shù)

9.2.3使用顏色常量

9.2.4直接使用顏色值9.2.1RGB函數(shù)

RGB是Red(紅色)、Green(綠色)、Blue(藍色)的縮寫,任何顏色都是由紅、綠、藍三種顏色按不同比例混合的結(jié)果。RGB函數(shù)通過指定紅、綠、藍不同的分量值得到不同的顏色,RGB函數(shù)的格式如下:

RGB(紅色值,綠色值,藍色值) 取值范圍為0~255,分別代表所要顏色中紅、綠、藍分量的大小。如將紅色和綠色混合可得到黃色,即RGB(255,255,0),其中0表示沒有藍色。9.2.2QBColor函數(shù)

QBColor函數(shù)用一個整數(shù)值對應(yīng)RGB的常用顏色值。QBColor函數(shù)的格式如下:

QBColor(顏色值)其中顏色值是一整數(shù),取值范圍0~15代表16種基本顏色,其對應(yīng)關(guān)系見表9-2。表9-2QBColor函數(shù)的顏色值與顏色的對照表值顏色對應(yīng)RGB顏色值值顏色對應(yīng)RGB顏色值0黑色RGB(0,0,0)8灰色RGB(64,64,64)1藍色RGB(0,0,191)9淡藍色RGB(0,0,255)2綠色RGB(0,191,0)10淡綠色RGB(0,255,0)3青色RGB(0,191,191)11淡青色RGB(0,255,255)4紅色RGB(191,0,0)12淡紅色RGB(255,0,0)5紫紅色RGB(191,0,191)13淡紫紅色RGB(255,0,255)6黃色RGB(191,191,0)14淡黃色RGB(255,255,0)7白色RGB(191,191,191)15亮白色RGB(255,255,255)9.2.2QBColor函數(shù)例如,若要將標(biāo)簽Label1的背景顏色設(shè)置為淡青色,可以使用下面的語句:Label1.BackColor=QBColor(11)表9-3常用顏色常量顏色常量顏色值顏色VbBlack&H0黑色VbRed&HFF紅色VbGreen&HFF00綠色VbYellow&HFFFF黃色VbBlue&HFF0000藍色VbMagenta&HFF00FF紫紅VbCyan&HFFFF00青色VbWhite&HFFFFFF白色VisualBasic定義了8種常用的顏色常量,在程序中可以直接引用這些常量,它們的取值見表9-3。例如,若要將文本框的字體顏色設(shè)置為藍色,可以使用下面的語句:Text1.ForeColor=VbBlue9.2.3使用顏色常量9.2.4直接使用顏色值

使用RGB函數(shù)、QBColor函數(shù)以及系統(tǒng)內(nèi)部的顏色常量來指定顏色都不是直接的,因為VisualBasic只是將它們解釋為與所代表的顏色比較接近的一種。如果了解VisualBasic是如何用數(shù)值來指定顏色,就可以給顏色參數(shù)和屬性指定一個準(zhǔn)確值確定顏色。通常用十六進制表示顏色值,表示方法為&HBBGGRR。其中&H表示該數(shù)為十六進制,BB代表藍色分量的十六進制值(00~FF),GG代表綠色分量的十六進制值(00~FF),RR代表紅色分量的十六進制值(00~FF),將這三個原色按以上格式構(gòu)成一個十六進制數(shù),即可代表相應(yīng)的顏色。例如,&HFF0000表示藍色,&H0000FF表示紅色。9.3常用繪圖控件

VisualBasic提供了兩種繪圖方法: 一是使用繪圖控件,例如Line控件和Shape控件; 二是使用繪圖方法,例如,Line畫線方法、Circle畫圓方法等。使用繪圖控件無需編寫代碼,但它提供的繪圖樣式有限,只能實現(xiàn)簡單功能,要想實現(xiàn)高級功能,還需要采用繪圖方法。直線Line控件和形狀Shape控件可用來在窗體、圖片框或框架上繪圖,這些控件不支持任何事件,只用于表面修飾。

直線(Line)控件在工具箱中的圖標(biāo)為,默認(rèn)名稱為Line1。使用Line控件可以在窗體、圖片框和框架上畫出各種直線,在設(shè)計階段通過屬性的設(shè)置確定直線的位置、長度、粗細、顏色和線型等。程序運行時不能使用Move方法移動Line控件,但可以通過改變直線控件的X1、Y1、X2、Y2屬性來移動或調(diào)整它的大小。Line控件的常用屬性見表9-4。表9-4直線控件的常用屬性屬性名稱說明BorderColor直線的顏色,可以在代碼中用顏色函數(shù)或常量賦值BorderStyle直線的線型,取值0~6共7種,線型樣式見表9-5BorderWidth直線的粗細,取值范圍1~6共6種。單位為像素(X1,Y1)表示直線左端點的坐標(biāo)(X2,Y2)表示直線右端點的坐標(biāo)9.3.1Line控件9.3.1Line控件表9-5BorderStyle屬性取值值字符常量說明0VbTransparent透明1VbBSSolid實線(默認(rèn)值),邊框處于形狀邊緣的中心2VbBSDash虛線3VbBSDot點線4VbBSDashDot點劃線5VbBSDashDotDot雙點劃線6VbBSInsideSolid內(nèi)收實線,邊框的外邊界是形狀的外邊緣 【例9-1】設(shè)計一個窗體,在窗體上用直線繪制一個長方體圖形,并根據(jù)用戶輸入的邊長計算長方體的體積。

(1)設(shè)計程序界面,如圖9-6左圖所示。在窗體上添加一個圖片框,在該圖片框上用Line控件繪制一個長方體圖形,再添加一個框架,在其中添加4個標(biāo)簽、4個文本框和1個命令按鈕,用于輸入邊長和計算長方體的體積。

(2)編寫程序代碼,程序的執(zhí)行結(jié)果如圖9-6右圖所示。9.3.1Line控件圖9-6界面設(shè)計和運行結(jié)果

直線(Line)控件在工具箱中的圖標(biāo)為,默認(rèn)名稱為Line1。使用Line控件可以在窗體、圖片框和框架上畫出各種直線,在設(shè)計階段通過屬性的設(shè)置確定直線的位置、長度、粗細、顏色和線型等。程序運行時不能使用Move方法移動Line控件,但可以通過改變直線控件的X1、Y1、X2、Y2屬性來移動或調(diào)整它的大小。Line控件的常用屬性見表9-4。表9-4直線控件的常用屬性屬性名稱說明BorderColor直線的顏色,可以在代碼中用顏色函數(shù)或常量賦值BorderStyle直線的線型,取值0~6共7種,線型樣式見表9-5BorderWidth直線的粗細,取值范圍1~6共6種。單位為像素(X1,Y1)表示直線左端點的坐標(biāo)(X2,Y2)表示直線右端點的坐標(biāo)9.3.1Line控件9.3.2Shape控件

形狀控件可以在窗體、框架和圖片框上繪制矩形、圓、橢圓和圓角矩形等。盡管窗體或圖片框的Line方法、Circle方法也可用來繪制矩形和圓形,但它們都是在程序代碼中使用;而用形狀控件繪制的圖形是在程序設(shè)計階段就可看到。因此,有些情況下使用Shape控件可方便應(yīng)用程序界面設(shè)計。此外,該控件還可以給其他控件加邊框。形狀控件的主要屬性見表9-6。表9-6Shape控件的屬性屬性名稱說明Shape設(shè)置繪制圖形的形狀,有6種,取值0~5,各取值含義見表9-7FillColor形狀的填充色,設(shè)置方法與其他控件的BackColor屬性相同F(xiàn)illStyle形狀的填充圖案,取值0~7,共8種,填充圖案取值見表9-8BackStyle形狀的背景是否透明。0:透明;1:不透明(默認(rèn)值)BorderColor形狀邊線的顏色,可以在代碼中用顏色函數(shù)或常量賦值BorderStyle形狀邊線的線型,取值0~6共7種,線型樣式見表9-5BorderWidth形狀邊線的粗細,取值范圍1~6共6種。單位為像素9.3.2Shape控件---Shape形狀控件的一個重要屬性是Shape,用來設(shè)置所畫圖形的形狀,見表9-7。表9-7Shape屬性取值屬性值字符常量說明0VbShapeRectangle矩形(默認(rèn)值)1VbShapeSquare正方形2VbShapeOval橢圓形3VbShapeCircle圓形4VbShapeRoundedRectangle圓角矩形5VbShapeRoundedSquare圓角正方形屬性值字符常量說明0VbFSSolid實線1VbFSTransparent透明(默認(rèn)值)2VbHorizontalLine水平直線3VbVerticalLine垂直直線4VbUpwardDiagonal上斜對角線5VbDownwardDiagonal下斜對角線6VbCross十字線7VbDiagonalCross交叉對角線形狀控件的另一個重要屬性是FillStyle,用來設(shè)置向所繪制圖形內(nèi)部填充的圖案樣式。見表9-89.3.2Shape控件---FillStyle9.3.2Shape控件---FillStyleFillStyle

屬性填充樣式9.4繪圖方法

使用繪圖方法繪制圖形比使用圖形控件靈活,便于構(gòu)成復(fù)雜圖形。例如,用圖形方法繪出的圖形可以直接顯示在窗體上;繪圖方法還可以繪出各種扇形、立體效果的圖形等。

用繪圖方法創(chuàng)建的圖形是在代碼中實現(xiàn)的,這就意味著必須在程序運行后才能看到圖形的效果。以下介紹的圖形方法適用于窗體和圖片框。9.4繪圖方法9.4.1PSet方法9.4.2Line方法9.4.3常用繪圖屬性和事件9.4.4Circle方法9.4.5Cls方法9.4.1PSet方法PSet方法可以在窗體或圖片框指定的位置,使用給定的顏色畫一個點,點的大小由對象的DrawWidth屬性決定。PSet方法格式如下:

[對象名.]PSet[Step](x,y)[,顏色]說明:(1)[對象名]可以是窗體、圖片框或打印機的名稱,如果省略,則默認(rèn)為當(dāng)前窗體。(2)(x,y)是畫點的坐標(biāo),默認(rèn)單位為Twip。(3)[顏色]指繪制點的顏色,默認(rèn)顏色為系統(tǒng)對象的前景色(ForeColor)。此參數(shù)可用顏色常量、顏色函數(shù)QBColor()或RGB()來設(shè)置畫點的顏色。(4)如果省略Step關(guān)鍵字,則(x,y)指的是絕對坐標(biāo);如果有Step關(guān)鍵字,則(x,y)表示的是相對于當(dāng)前坐標(biāo)位置的偏移量,即步長(水平和垂直兩個方向,可正可負)。例如PSet(120,200) '在當(dāng)前窗體上畫點Picture1.Pset(50,70),RGB(0,0,255)'在圖片框上畫藍色點PSet(120,200),vbRed'使用顏色常量若要清除某一點上的像素,只要把其顏色設(shè)置為背景色即可:PSet(50,70),BackColor9.4.1PSet方法圖9-8PSet方法示例【例9-2】設(shè)計一個窗體,使用鼠標(biāo)采用PSet方法在窗體上繪制圖形。9.4.2Line方法使用Line方法可以在窗體或圖片框?qū)ο笊袭嬛本€和矩形。(1).直線(2).矩形9.4.2Line方法(1).直線用Line方法在兩個坐標(biāo)點之間畫一條直線,其語法格式如下:[<對象名>.]Line[[Step](x1,y1)]-[Step](x2,y2)[,顏色]說明:(1)<對象名>是指窗體和圖片框的名稱,如果省略則默認(rèn)在當(dāng)前窗體上畫線。(2)(x1,y1)和(x2,y2)分別是直線的起點和終點坐標(biāo)。起點坐標(biāo)(x1,y1)是可選的,若省略則起點為當(dāng)前坐標(biāo)(CurrentX,CurrentY)位置。(3)如果起點(x1,y1)前有關(guān)鍵字Step,則表示起點坐標(biāo)相對于當(dāng)前坐標(biāo)位置的偏移量。如果終點(x2,y2)前有Step關(guān)鍵字,則表示相對于起點坐標(biāo)的偏移量。(4)[顏色]參數(shù)指定畫線的顏色,可以使用顏色代碼或顏色函數(shù)。省略時用對象的ForeColor屬性指定的顏色繪制直線。(5)在默認(rèn)情況下,用Line方法畫直線使用的是標(biāo)準(zhǔn)坐標(biāo)系統(tǒng),根據(jù)需要有時使用自定義坐標(biāo)系統(tǒng)會更方便。9.4.2Line方法圖9-9用Line方法畫出的三角形以下語句通過三點連線畫出一個三角形,如圖9-9所示。CurrentX=1000 '設(shè)置起點x的坐標(biāo)CurrentY=300 '設(shè)置起點y的坐標(biāo)Line-(2500,1500) '向起點的右下方畫一條直線Line-(1000,1500) '向當(dāng)前點的左側(cè)畫一條直線Line-(1000,300) '向當(dāng)前點的上方畫一條直線到起點若使用Step關(guān)鍵字,以上語句可以改寫為:CurrentX=1000CurrentY=300Line-Step(1500,1200)Line-Step(-1500,0)Line-Step(0,-1200)

在許多情況下,可以通過在每個點之前加上Step關(guān)鍵字,來指定要畫的點相對最后點的坐標(biāo)位置。這樣可以免除連續(xù)不斷地記錄最后所畫點的坐標(biāo)位置所帶來的繁瑣,因為我們最關(guān)心的是前后兩個點的相對位置,而不是絕對位置。(1).直線圖9-10用Line方法畫網(wǎng)格線用Line方法所畫出的直線,要包括第一個端點,而不包括最后一個端點。為了畫出最后一個端點,應(yīng)使用如下方法:\

PSet[Step](0,0)[,<顏色>]例如,Line(100,200)-step(50,50)

PSetstep(0,0)【例9-3】用Line方法在窗體上畫網(wǎng)格線,并在窗體中央顯示文字。9.4.2Line方法(1).直線(1).矩形9.4.2Line方法繪制矩形仍使用Line方法,它有兩種操作方式:一.是用繪制直線的方法依次畫出矩形的四條邊;二.是在Line方法中加上參數(shù)B,并同時指定矩形左上角和右下角坐標(biāo)來完成矩形的繪制。前者使用起來較繁瑣,一般很少使用;后者除了繪制矩形外,還可以指定填充的顏色和圖案,使用起來靈活方便。(1).矩形9.4.2Line方法使用Line方法繪制矩形的格式:[<對象名>.]Line[[Step]

(x1,y1)]-[Step](x2,y2)[,顏色],B[F]說明:用Line方法繪制矩形與用Line方法繪制直線相比,多了兩個參數(shù)B和F。繪制矩形參數(shù)B不能省略,否則畫的是直線。在Line方法中使用B參數(shù)時,(x1,y1)和(x2,y2)作為矩形的對角點坐標(biāo)。例如,可用下列語句畫出邊長是1000Twip的矩形。

Line(500,500)-step(1000,1000),BB參數(shù)前的兩個逗號,表示顏色參數(shù)被省略了。若選用F參數(shù),則矩形以矩形邊框的顏色來填充。當(dāng)使用F參數(shù)選項時,Line方法將忽略FillStyle和FillColor屬性。無參數(shù)B時,不能使用參數(shù)F。(1).矩形9.4.2Line方法圖9-11用Line方法繪制矩形【例9-4】使用Line方法繪制矩形,如圖9-11所示。PrivateSubForm_Load()ShowX=200Y=200Line(100,100)-Step(X,Y),QBColor(1),BF'畫出第1個填充藍色的小矩形Fori=2To5Line-Step(X*i,Y*i),QBColor(i),BF'畫出后4個逐漸增大的綠、青、紅和紫色矩形NextFori=0To800Step100'畫8個嵌套的方形框Line(4000-i,1000-i)-(4000+i,1000+i),BNextEndSub9.4.3常用繪圖屬性和事件1.CurrentX屬性和CurrentY屬性窗體和圖片框都有這兩個屬性,用來設(shè)置橫坐標(biāo)和縱坐標(biāo),只有在程序運行時可以使用這兩個屬性。在輸出文字或繪制圖形時,當(dāng)前位置坐標(biāo)就是CurrentX和CurrentY屬性的值。這兩個屬性的默認(rèn)值都是0,即窗體和圖片框的默認(rèn)當(dāng)前坐標(biāo)位置在左上角。9.4.3常用繪圖屬性和事件

2.DrawWidth屬性

該屬性用來指定使用圖形方法繪制圖形時線條的寬度,而BorderWidth用來指定直線控件和形狀控件輪廓線的粗細。 DrawWidth屬性的語法格式為: [<對象名>.]DrawWidth=[<值>] [對象名]是窗體或圖片框的名稱,缺省時為當(dāng)前窗體。<值>以像素為單位,取值范圍1~32767,缺省值為1。9.4.3常用繪圖屬性和事件

3.DrawStyle屬性 DrawStyle屬性用于指定使用圖形方法繪制的線條樣式,它有7種值,用來產(chǎn)生不同間隔的實、虛線。默認(rèn)值為0(實線)。 DrawStyle屬性的語法格式為:

[<對象名>.]DrawStyle=[<值>]

注意:當(dāng)DrawWidth=1時,DrawStyle屬性的設(shè)置值全部起作用;當(dāng)DrawWidth>1,DrawStyle屬性的設(shè)置為1~4時,DrawStyle屬性不起作用,此時繪出的都是實線。9.4.3常用繪圖屬性和事件【例9-5】下列程序演示了DrawStyle屬性所支持的各種設(shè)置值對應(yīng)的線條樣式。程序運行結(jié)果如圖9-12所示。PrivateSubForm_Load()ShowFori=0To6Y1=300+500*iCurrentX=2000'設(shè)置起點x的坐標(biāo)CurrentY=Y1'設(shè)置起點y的坐標(biāo)DrawStyle=iLine-(4000,Y1)NextiEndSub由圖9-12可見,DrawStyle=5是無邊線(透明)。9.4.3常用繪圖屬性和事件

4.FillColor屬性和FillStyle屬性FillColor屬性和FillStyle屬性分別用于對已繪制好的封閉圖形設(shè)置填充色和填充圖案。FillColor屬性的語法格式為:

[<對象名>.]FillColor[=<值>]

其中<值>可以用RGB函數(shù)或QBColor函數(shù)指定顏色。

FillStyle屬性的語法為:

[<對象名>.]FillStyle[=<值>]

其中<值>為0~7共8種選擇,其填充效果請參考表9-8和圖9-7所示。9.4.3常用繪圖屬性和事件

5.AutoRedraw屬性

該屬性用于確定在窗體或圖片框中用繪圖方法繪制的圖形,在覆蓋它的對象移走后是否重新顯示,其值是布爾值(True或False)。 例如,當(dāng)圖片框的AutoRedraw屬性設(shè)置為True時,當(dāng)最小化的窗體還原為標(biāo)準(zhǔn)化窗體時,圖片框中的圖形會自動重新顯示;或者覆蓋此圖片框的其他窗口被移走后,圖形也重新顯示。如果AutoRedraw屬性設(shè)置為False時,則圖片框中的圖形不會自動重新顯示。

對于以圖標(biāo)、位圖等文件形式加載的圖形,與AutoRedraw屬性無關(guān)。因為VisualBasic能保存并重繪這些圖形,只有在程序中用繪圖方法繪制的圖形及放置的文本才需要使用AutoRedraw屬性。此外,如果AutoRedraw屬性設(shè)置成False,但又需要能自動重繪圖形,可將繪圖方法放在Paint事件中。9.4.3常用繪圖屬性和事件

6.Paint事件 窗體與圖片框支持Paint事件。

Paint事件是在窗體或圖片框被覆蓋又顯示出來時觸發(fā),或者在窗體加載、最小化、還原、最大化時被觸發(fā)的事件。因此該事件可用于重新繪制圖片框或窗體中用Circle、Line等方法繪制的圖形,使用時只需要將這些繪圖方法放在此事件過程中即可。

注意,使用Paint事件時,可以不依賴AutoRedraw屬性的值。因此,該事件過程常用于AutoRedraw屬性值被設(shè)置為False時,恢復(fù)窗體或圖片框上被破壞的圖形或文本。9.4.3常用繪圖屬性和事件圖9-13AutoRedraw屬性和Paint事件示例【例9-6】AutoRedraw屬性和Paint事件的使用示例。9.4.4Circle方法Circle方法用于在窗體、圖片框或打印機上繪制圓、橢圓和弧等圖形,前面介紹的有關(guān)屬性DrawWidth、DrawStyle、FillColor、FillStyle等在Circle方法中也同樣適用。1.畫圓9.4.4Circle方法用Circle方法畫圓時,其語法格式為:

[<對象名>.]Circle[Step](X,Y),半徑[,顏色]其中,坐標(biāo)(X,Y)代表圓心。若缺省顏色參數(shù),則系統(tǒng)用對象的前景顏色繪制圓。例如,下面的語句將畫出一個以(1200,1000)為圓心、750為半徑的圓。Circle(1200,1000),750這個語句產(chǎn)生的效果還要依賴窗體的大小和窗體的坐標(biāo)系。若不知道窗體的大小和坐標(biāo)系,就不能確定圓是否可見。以下語句使用窗體的標(biāo)尺屬性,將圓心置于窗體的中心處。Circle((ScaleWidth+ScaleLeft)/2,(ScaleHeight+ScaleTop)/2),ScaleWidth/49.4.4Circle方法1.畫圓【例9-7】在圖片框中以圖片框的中心為圓心,用隨機顏色連續(xù)繪制不同半徑的同心圓,直到繪滿整個圖片框。PrivateSubPicture1_Click()

RandomizePicture1.ScaleMode=3

'設(shè)置為像素單位Picture1.AutoRedraw=True '使圖形自動重繪Picture1.Width=Picture1.Heightcx=Picture1.ScaleWidth/2 '

獲得x的值cy=Picture1.ScaleHeight/2

'獲得y的值limit=cx '設(shè)置圓的最大半徑Forr=0Tolimit '連續(xù)畫出多個圓Picture1.Circle(cx,cy),r,RGB(255*Rnd,255*Rnd,255*Rnd)NextrSavePicturePicture1.Image,"d:\vb\circle.bmp"'將圖形存儲到位圖文件中EndSub程序的運行結(jié)果如圖9-14所示。9.4.4Circle方法2.畫弧和扇形使用Circle方法也可以繪制弧和扇形?;∈窃趫A的邊線上截取的一部分;而扇形還要在弧的基礎(chǔ)上,從弧的兩端分別畫一條到圓心的直線,扇形是封閉的圖形。繪制弧和扇形的語句格式如下:[<對象名>.]Circle[Step](X,Y),半徑,[<顏色>],[<起始角>,<終止角>]起始角和終止角都是相對于0弧度的偏移量。畫弧時從起始角開始,按逆時針方向繪制到終止角結(jié)束。起始角和終止角參數(shù)可以為正數(shù),也可以為負數(shù),但必須同時為正或同時為負。如果起始角和終止角為負數(shù)時,除了畫圓弧之外,還要在弧的兩端加上徑向線,即畫出一個扇形。9.4.4Circle方法2.畫弧和扇形【例9-8】在窗體上繪制如圖9-15所示的弧和扇形。PrivateSubForm_Load()Constpi=3.14159ShowForeColor=vbRedDrawWidth=1FillStyle=0FillColor=vbBlueCircle(1500,500),1000,,-pi,-3/2*pi'畫四分之一圓大小扇形,省略顏色值Circle(2000,500),1000,,3/2*pi,2*pi'畫弧FillStyle=1Circle(4000,1000),500,,-pi/6,-pi/3 '畫小扇形Circle

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論