Delphi繪圖對象屬性[TCanvas][一]
2009-01-24 21:10
在Delphi中,專門定義了一組用于繪制圖形的對象和組件,完成一些簡單的圖像功能。利用這些對象、組件的方法,可以方便地繪制各種常用圖形;通過設(shè)置它們的屬性,能得到不同風(fēng)格的圖形。另外,通過對鼠標(biāo)事件的定義,可以方便設(shè)計圖形繪制程序。
(1)TCanvas,TPen,TBrush,TColor對象的方法及屬性;
(2)繪圖功能的實現(xiàn);
(3)TImage,TPicture,TBitBtn,TBitmap組件的方法及屬性;
(4)圖像觀測及處理。4.4.1 TCanvas——畫布對象
TCanvas對象是一個用于繪圖的組件,Delphi利用這個組件為用戶提供了一個繪制圖形的區(qū)域,在這個區(qū)域上,程序可實現(xiàn)各種繪圖功能,很多組件(如TImage、TMemo)的Canvas屬性就是TCanvas對象。在組件上繪制圖形就是在組件的畫布上繪制。TCanvas的Brush、Pen、Font屬性分別是TBrush、TPen、TFont對象,它們用于定義繪制圖形的風(fēng)格。關(guān)于TBrush、TPen對象,后面將詳細介紹。
需要說明的是,Delphi中利用前綴T來標(biāo)志內(nèi)部定義的對象,例如TPen代表畫筆對象,TForm則代表窗體對象等。
畫布的筆的位置定義在PenPos屬性中,可用MoveTo方法來移動筆。如果要在畫布上輸出文本,可用Textout方法。
TCanvas對象有很多方法,可完成常用的繪圖功能。方法及功能簡介見表4.2。
表4.2 TCanvas對象的方法
方法
|
說明
|
Arc
|
Arc(x1,y1,x2,y2,x3,y3,x4,y4 :
Integer);
Arc方法在橢圓上畫一段弧,橢圓由(x1,y1)、(x2,y2) 兩點所確定的橢圓決定。弧的起點是橢圓圓周和橢圓中心與(x3,y3)連線的交點。弧矩形終點是橢圓圓周和橢圓中心與(x4,y4)連線的交點以逆時針方向畫弧
|
Chord
|
Chord(x1,y1,x2,yx,x3,y3,x4,y4 :
Integer);
Chord方法連接橢圓上兩點,橢圓由(x1,y1)、(x2,y3) 兩點所確定的矩形決定,(x3,y3)是始點,(x4,y4)是終點
|
Brushcopy
|
Brushcopy(const Dest : TRect;Bitmap :
TBitmap;
const Source TRect;Color :
TColor);
|
|
Brushcopy方法把位圖的一部分復(fù)制到畫布的某個矩形區(qū)域,并用畫筆的當(dāng)前顏色替換位圖的顏色。參數(shù)Dest定義畫布的一個矩形區(qū)域,該矩形用以填充位圖,Bitmap定義位圖;Source定義位圖中的矩形區(qū)域,該區(qū)域上的位圖將被復(fù)制;Color定義畫筆中用以替換位圖的顏色
|
CopyRect
|
CopyRect(Dest:TRect;Canvas:TCanvas;
Source TRect);
此方法從另一個畫布對象上復(fù)制部分圖像到該畫布。Canvas表示源畫布,Source是源畫布上要復(fù)制的圖像區(qū)域。Dest表示目標(biāo)畫布上將接受復(fù)制圖像的矩形區(qū)域
|
(續(xù)表)
方法
|
說明
|
Draw
|
Draw(x,y : Integer;Graphic
: TGraphic);
此方法在畫布給定的像素點坐標(biāo)(x,y)處畫Graphic所給的圖像,該圖像可以是位圖、圖標(biāo)或元位圖
|
Ellips
|
Ellips(x1,y1,x2,y2 :
Integer);
Ellips方法在畫布指定的矩形邊界上畫一個橢圓,(x1,y1)是矩形左上角的像素坐標(biāo),(x2,y2)是矩形右下角的像素坐標(biāo)。如果矩形形成一個區(qū)域,則將出現(xiàn)一個橢圓
|
LineTo
|
LineTo(x,y :
Integer);
|
LineTo從當(dāng)前位置畫一條線至(x,y)所指定的位置,并把筆的位置移至(x
,y)
|
MoveTo
|
MoveTo(x,y : Integer);
MoveTo將筆的當(dāng)前位置設(shè)置到點(x,y)處,筆的當(dāng)前位置在PenPos屬性中,改變筆的當(dāng)前位置使用MoveTo方法,不要設(shè)法改變PenPos的值
|
Die
|
Die(x1,y1,x2,y2,x3,y3,x4,y4 :
Longint);
Die方法繪制橢圓的一部分,橢圓由點(x1,y1),(x2,y2)所確定的矩形所決定,繪制的那部分由橢圓中心到(x3,y3)、(x4,y4)兩點的兩條輻射線所決定
|
Polygon
|
Polygon(Points : array of
TPrint);
Polygon方法在畫布上繪制一系列的點,各點依次連成線,最后將首尾兩點相接形成一個區(qū)域,并用當(dāng)前筆刷填充此區(qū)域
|
Polyline
|
Polyline(Ports : array of
TPort);
Polyline方法在畫布上用當(dāng)前畫筆繪制一系列的點,各點依次連成線
|
StretchDraw
|
StretchDraw(Const Rect : TRcct :
Graphic : TGraphic);
此方法在Rect參數(shù)指定的矩形內(nèi)畫一圖像。圖像延伸,改變大小以適應(yīng)矩形
|
Rectangle
|
Rectangle(X1,y1,x2,y2 :
Integer);
Rectangle方法在畫布上用當(dāng)前畫刷繪制矩形,(x1,y1)是矩形的左上角,(x2,y2)是矩形的右下角
|
DrawFocusRect
|
DrawFocusRect(Const Rect :
TRect);
此方法繪制一矩形以指示此矩形獲得焦點。此方法是XOR(異或)函數(shù),第二次調(diào)用時原有矩形將消失。DrawFocusRect繪制的矩形不能滾動。要實現(xiàn)滾動功能則先調(diào)用此方法使矩形消失,待滾動過后重新繪制
|
4.4.2 TPen——畫筆對象
應(yīng)用程序常用TPen對象在畫布上繪制各種線段,筆的顏色在Color屬性中定義。線段寬度在Width屬性中定義。
1. Style屬性
Style屬性定義了線段的各種類型,見表4.3。
表4.3 Style屬性的取值及含義
Style屬性
|
含義
|
PsSolid
|
畫固定線段
|
PsDash
|
畫由虛線組成的線段
|
PsDot
|
畫由點組成的線段
|
PsDashDot
|
畫點劃線
|
PsDashDotDot
|
畫雙點劃線
|
PsClear
|
畫看不見的線段
|
PsInsideFrame
|
畫邊界的矩形線框
|
|
|