TCanvas為作圖對象提供一個抽象的畫布。
類關系 TObject->TPersistent
對那些作圖對象,可使用TCanvas對象作為畫布。標准的window控件,例如編輯控件和列表框控件,當它們被Windows畫出來時,並不需要一塊畫布。在創建一幅圖像時,TCanvas對象提供有用的屬性、方法和事件,主要通過以下方法:
指定需要使用的刷子、畫筆和字體類型。
對各類形狀和線條進行作圖和填充。
輸入文體。
對圖像進行著色。
對當前圖像的變化能作出反應。
TCanvas有兩個子類,即TControlCanvas和TMetafileCanvas,它們對控件圖像的作圖和創建對象的圖元文件圖像有所幫助。
屬性列表
Brush 決定畫布填充圖形的背景顏色和填充圖案的模式
ClipRect 指定剪貼矩形的邊界
CopyMode 確定如何將復制的圖像放到畫布上面
Font 指定使用文體的字體
Handle 是針對畫布的Windows GDI句柄
LockCount 表示畫布被鎖定的次數
Pen 指定使用的畫筆種類
PenPos 指定畫筆當前的作圖位置
Pixels 指定當前ClipRect中點的顏色
方法列表
~TCanvas 釋放TCanvas占用的內存
Arc 在圖片上畫出一段弧線
BrushCopy 制位圖的一部分到位於畫布上的矩形中
Chord 畫一個由一條直線和一個橢圓相交所的的閉合圖形
CopyRect 將另一畫布上圖形的一部分復制到這個畫布上
Draw 在畫布上輸出由Graphic參數指定的圖像
DrawFocusRect 畫一個矩形框表示矩形內的控件對象具有輸入焦點
Ellipse 在畫布上畫橢圓
FillRect 使用當前刷子填充畫布上指定的矩形
FloodFill 使用當前刷子填充畫布上的一塊區域
FraneRect 畫出一個矩形的邊框
LineTo 在畫布上畫一條從當前畫筆位置到指定點(x, y)的直線
Lock 使其他線條不在畫布上畫出
MoveTo 使當前作圖位置移到點(x, y)
Pie 在畫布上畫一個扇形
PolyBezier 畫一簇Bezier曲線
PolyBezierTo 畫一簇Bezier曲線並更新PenPos的值
Polygon 在畫布上畫出閉合圖形
Polyine 在畫布上畫出一系列鏈接點數組中的每一個點的直線
Rectangle 在畫布上畫出一個矩形
Refresh 從設備場境裡刪除 Pen、Brush 以及 Font
RoundRect 在畫布上畫出一園角的矩形
StretchDraw 畫出由 raphic 參數指定的圖像
TCanvas 創建一介 TCanvas 對象的實例
TextExtent 返回字符串的像素寬度和高度
TextHeight 返回字符串的像素高度
TextOut 在畫布上從點(x,y)處開始輸出一字符串
TextRect 在剪切矩形區內輸出字符串
TextWidth 返回字符串的像素寬度
TryLock 調用TryLock 將鎖定畫布
Unlock 使LockCount 屬性值減少
事件列表
OnChange 當畫布上的圖像剛發生變化時OnChange事件發生
OnChanging 當畫布上的圖像剛發生變化時OnChanging事件發生
屬性
TCanvas::Brush
決定畫布填充圖形的背景顏色和填充圖案模式。
__property TBrush* Brush = { read =FBrush, write =SetBrush };
通過設置 Brush屬性的屬性,指定作圖背景顏色和填充圖案的模式。Brush 屬性值為TBrush 對象。當在畫布上填充一個空間時,通過設置TBrush 對象的屬性,可以指定可以使用的顏色、模式或者位圖。
注意:設置Brush 屬性是為分配指定的TBrush 對象,而不是替代當前的 TBrush 對象。
TCanvas:::ClipRect
指定剪貼矩形的邊界。
__property Windows:::TRect ClipRect = {read =GetClipRect };
使用ClipRect權屬性用來限定畫布的作圖區域。任何坐標在ClipRect 屬性以外的作圖將被剪切掉並且不會出現在圖像中,例如,在一個較小的框中畫一個大圓的一部分,首先畫框,然後對由框的內邊界限定的矩形進行ClipRect屬性設置 。此時,畫整個圓將顯示在框內部分。
當處理窗體的OnPaint 事件時,畫布的ClipRect 屬性被設置成所需著色的矩形。不與ClipRect 重疊的圖像部分,不必畫出。因此,OnPaint 例程能夠使用 ClipRect 屬性的數值,對著色進行優化,並加速應用軟件的全面運行。
TCanvas::CopyMode
確定如何將復制的圖像放到畫布上面。
__property int Copy Mide = {read = FCopyMode, write = FCopyMode, default = 13369376 };
設置copyMode屬性,可以改變畫出的圖像到畫布上面的路徑。當使用CpyReet 方法從另外的畫布上復制圖像時,使用CopyMode屬性。當TBitmap 對象畫它們自身到一個畫布上時,CopyNode屬性還被TBitmap對象使用。
下表給出了CopyMode屬性可能的取值,並對每一取值進行了描述。
取值 說 明
cmBlackness 用黑色填充畫布的矩形目標
cmDstInvert 忽略源圖,將畫布上的圖像反轉
cmMergeCopy 將畫布上的圖像與源位圖進行AND操作
cmMergePaint 將畫布上的圖像與反轉的源位圖進行OR操作
cmNotSrcCopy 復制反轉的源位圖與畫布
cmNotSrcErsae 將畫布上的圖像與源位圖進行OR操作,然後再反轉
cmPatCopy 復制源式樣至畫布
cmPatInvert 將畫布上的圖像與源式樣進行XOR操作
cmPatPaint 使用OR操作使反轉的源位圖與源式樣結合,並將操作結果與畫布上的圖像進行OR操作
cmSsrcAnd 將畫布上的圖像與源位圖進行AND操作
cmSrcCopy 復制源位圖至畫布
cmSrcErase 將畫布上的圖像進行反轉,然後將其與源位圖進行XOR操作
cmSrcInvert 將畫布上的圖像與源位圖進行OR操作
cmWhiteness 用白色填充畫布上的矩形目標
TCanvas::Font
當在圖像上寫的文本時,使用Font屬性指定使用文本的字體
__property TFont* Font = { read = FFont, write = SetFont } ;
對圖像上的文本,使用Font屬性可以指定使用文本的字體。Font 屬性的數值是TRont 對象。設置TFont對象的屬性,可以指定使用字體的外觀、顏色、大小以及風格等。
注意:僅對指定TFont對象的 Font 屬性進行指定,而不是替代當前的TFont對象。
TCanvas::HandIe
是針對畫布的Windows GDI句柄。
__property HDC HandIe = { read = GetHandIe write = SetHandIe ,nodefauIt } ;
對於卷入畫布的設備場境,必須設置HDC 的Handle 屬性。當窗口控件對Windows 著色信息進行響應時,繪圖所需的HDC 即轉化為PrtDeviceContext 方法 。在其他情況下,通過調用控件的GetDeviceContext方法,也能獲得HDC。此外,對打印機或者存儲器,Windows 還提供了能夠獲得HDC的API調用方法。
讀Handle 屬性可以對由使用需要設備場境句柄的進行API調用的TCanvas 對象提供繪圖設備進行補充。絕大多數的Windows GDI調用,需要HDC。
TCancas對象沒有自己的HDC。應用軟件必須建立一個HDC,並對Handle 屬性進行設置。當畫布不再需要時,應用軟件應釋放HDC。對已有效一個有HDC畫布,進行Handle屬性進行設置時,將不能自動釋放初始的HDC。
注意:TCanvas 對象的一些字體,如TControlCanvas , 有其自己的HDC。不要為這些對象設置Handle屬性。它們使用並釋放自己的Handle屬性。
TCanvas::LocKcount
表示畫布被鎖定的次數,以避免與其他線條相沖突。
__properrty int LockCount = {read = FLockCount,nodefault }:
讀LockCount屬性可以查明畫布是否被鎖定。每當調用Lock方法防止畫布與其他線條相沖突時,LockCount屬性增加。調用Unlock方法時,LockCount 屬性減少。當LockCount屬性為0時,其他線條可以在畫布上畫出。
TCanvas::Pen
指定畫布為畫線和畫圖形輪廓而使用的畫筆種類。
__property TPen * Pen + {read = FPen, write =SetPen };
在一幅圖像中,設置Pen 屬性可指定畫線和畫圖形輪廓而使用的畫筆種類。Pen屬性的數值是TPen對象。設置TPeb對象的屬性,可以指定畫筆的顏色、風格、寬度以及樣式等。
注意:僅對指定TPen 對象的Pen屬性進行設置,而不是替代當前的TPen對象。
TCanvas::PenPos
用來指定畫筆當前的作圖位置。
__property tag POINT penPos = {read = GetPenPos , write = SetPos },
讀 PernPos 可以知道畫筆當前的傻圖位置。它是用 LineTo 方法作圖的起始點位置。設置 PenPos 屬性相當於調用 MoveTo 方法 。
TCanvas::Pixels
指定當前 ClipRect是中點顏色。
__property TColor Tixels [ int Y ] = { read = Get Pixel , write = SetPixe } ';
讀取Tixels 讀屬性可以知道位於具體像素位置的畫面顏色。寫Pixels屬性可以改變畫面上某個特定像素的顏色。使用Pixels 屬性可以細化圖像效果。Pixels 屬性還可以用於確定被FillRect方法使用的顏色。
不是每一個設備場境都支持Pixels屬性。這樣的設備場境,讀出的Pixels屬性返回值為--- 1。則對這樣的設備場境進行Pixels 屬性設置是沒有用的。
注意: Pixels屬性僅對位於當前Cliprect 數值內的像素有效。
方法
TCanvas::~TCanvas
刪除一個TCanvas的實例。
__fastcall virtual ~ TCanvas(void);
在應用程序中,不要直接調用~TCanvas,而應調用delete。
~TCanvas首先釋放為Font、Brush和Pen屬性創建的TFont、TBrush和TPen對象。然後再釋放TCanvas對象的內存。
TCanvas::Arc
沿由指定矩形確定的橢圓的邊,可以在圖片上畫出一段孤線。
void __fastcall Arc{int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4};
使用Arc過程,用當前畫筆畫一個橢圓形曲線。弧線橫跨以點(x1, y1)和點(x2, y2)為邊界的橢圓邊。根據橢圓形周長,按照逆時針方向,從起始點至結束點畫出弧線。起始點為橢圓中心和點(x3, y3)確定的直線與橢圓的交點。結束點為橢圓中心和點(x4, y4)確定的直線與橢圓的交點。注意:在Windows95中,x1+x2的和,以及y1+y2的和,不能超出32768。而且,x1+x2+y1+y2的和也不能超出32768。在Windows NT中,使用Windows API調用SetrcDirection方法,畫弧線的方向可以改變為順時針方向。
TCanvas::BrushCopy
復制位圖的一部分到位於畫布上的矩形中,並且用畫布刷子的顏色替代圖像的顏色。
void__fastcall BrushCopy(const Windows::TRect & Dest, TBitmap * Bitmap, const Windows::TRect & Source, Tcolor color);
使用BrushCopy可以獲得諸如使復制圖片部分透明這樣的特殊效果。BrushCopy過程具有向後兼容性能。使用TImageList方法可以替代BrushCopy過程。為了使運用BrushCopy過程復制出來的圖片具有部分透明效果,應當指定畫布表面的顏色(如clBackground)作為Brush屬性的Color參數,然後調用BrushCopy過程。
TCanvas::Chord
畫一個由一條直線和一個橢圓相交,所構成的閉合圖形。
void__fastcall Chord (int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4);
使用Chord可以創建一個由弧形及鏈接弧形兩個端點的直線所構成 的圖形。弦是橢圓以點(x1,y1)和點(x2,y2)為邊界的一部分。橢圓被點(x3,y3)和點(x4,y4)之間的一條直線分割成兩部分。
弦的邊從點(x3,y3)開始,按逆時針方向沿橢圓運行到點(x4,y4),最後一直回到點(x3,y3).如果點(x3,y3)和點(x4,y4),不在橢圓表面上,相應的弦的拐點,取在橢圓邊上截斷直線最接近的點。使用Pen屬性數值可以畫出弦的輪廓,使用Brush屬性數值可以對圖形進行填充。在Windows95中,x1+x2的和,以及y1+y2的和,不能超出32 768。而且,x1+x2+y1+y2的和也不能超出32 768。在Windows NT中,使用Windows API調用SetArcDirection方法,畫弦的方向可以改變為順時針方向。
TCanvas::CopyRect
將另一個畫布上圖形的一部分復制到這個畫布上。
void__fastcall CopyRect (const Windows::TRect& Dest, TCanvas* Canvas, const Windows::TRect & Source);
使用CopyRect過程,可以將另一個畫布上圖形的一部分,轉移到TCanvas對象的圖片上。Dest參數,指定了將要復制的源圖形存放在畫布上的矩形區域。Canvas參數指定與源圖像相關的畫布。Source參數指定將要復制的源畫布部分的矩形區域。源畫布部分,通過使用CopyMode方法的指定模式來進行復制。
TCanvas::Draw
在給出的坐標(X,Y)位置處,Draw在畫布上輸出由Graphic參數指定的圖像。
void __fastcall Draw(int X, int Y, TGraphic* Graphic);
調用Draw可以在畫布上畫出一個圖像。Draw調用圖形的Draw方法。圖片輸出到一個圖形大小確定、左上角位於點(X,Y)處的矩形區域。
圖像可以是點位圖、圖標或者圖元文件。如果圖像是一個Bitmap對象,點位圖通過使用CopyMode方法的數值輸出。
TCanvas::DrawFocusRect
畫一個矩形框,通常用於表示矩形內的控件對象具有輸入焦點。
void __fastcall DrawFocusRect( const Windows::TRect &Rect ) ;
當控件獲得或失去輸入焦點時,調用DrawFocusRect可以畫出控件圖片的邊框。因為DrawFocusRect使用XOR功能,因此,當第二次調用drawFocusRect時,相同的矩形框將從屏幕上消失。
使用DrawFocusRect 畫了出的矩形框,為能進行滾動。為了滾動由DrawFocusRect 畫出的包含矩形框的區域,首先調用DrawFocusRect ,從屏幕上移去矩形框,滾動該區域,然後再調用drawFocusRect , 在新位置上畫出矩形框。
TCamvas::Ellipse
在畫布上的矩形范圍內畫橢圓。
void __fastcall Ellipse (int X1,int Y1,int X2,int Y2 );
調用Ellipse過程,可以在畫布畫圓或者橢圓。矩形范圍的左上點位於像素坐標(x1,y1).矩形范圍的右下點位於像素坐標 (x2,y2).。如果矩形窗體有所有點構成一個正方形,則將畫出圓形。使用Pen屬性的數值,可以畫出橢圓輪廓;作用Brush屬性的數值,可以對橢圓進行填充。
注意: 在Windows95中,x1 + x2 的和,以及 y1 +y2 的和,不能超出32768。而且,x1 +x2 +y1 +y2的和也不能超出32768。
TCanvas::fillRect
使用當前刷子填充畫布上指定的矩形。
void__fastcall Rloodfill (int X, int Y ,TColor Color,TFillStyle FillStylr ) ;
使用Brush屬性的數值,調用FloodFill 過程對可以一個非矩形區域進行填充,被填充區域的邊界,從點(x,y,) 開始向外擴充,直到遇到Color參數指定的顏色邊界為止。
FillStyle參數,確定了邊界顏色變化類型,用下表進行表示。
數值 說明
fsSurface 填充所有由Color參數指定的顏色區域。當遇到另一種顏色時停止
fsBorder 填充所有由非Color參數指定的顏色區域。當遇到Color 參數指定的顏色邊界時停止
當使用FillStyle參數為fsSurface的FloodFill過程時,使用Pixels屬性可以獲得位於點( x ,y )處的顏色的確切數值,類似地,當使用FillStyle參數為faBorder的FloodFill過程時,如果直到邊界上的點,則使用Pixels屬性可以獲得邊界顏色的確切數值。
TCanvas::FrameRect
使用畫布的Brush屬性,畫出一個矩形的邊框。
void__fastcall framsRect ( const Windows ::TRect &Rect ) ;
使用FrameRect可以畫出一個像素寬的矩形區域有邊界。FrameRect過程對矩形內部不用Brush屬性進行填充。
通常,使用Polygon方法畫一條邊線,而不使用Pen方法 。
TCanvas ::LineTo
在畫布上畫開條從當前畫筆位置到指定點(x,y)的直線,並且將畫筆位置設置為點(x,y)。
void __fastcall LineTo (int X ,int Y);
使用LineTo可以畫一條從當前畫筆位置到指定點(x,y)的直線,但不包括點 (x,y)。 LineTo 將畫筆位置設置為點(x,y)。
TCanvas::Lock
可以使其他線條不在畫布上畫出。
void __ fastcall Lock(void );
在需要畫多條線條的應用程序中,調用Lock過程可以使其他線條不在畫布上畫出。除非調用了UnLock方法,否則Lock過程可以使應用程序中的所有其他線條不會畫出,嵌套調用Lock, 使LockCount屬性增加,以致使畫布上進行作圖,除非最後一個鎖定被釋放。
由於Lock可以使所有其他線條不會畫出,因此Lock對執行情況具有負影響,除非存在其他線條可能妨礙再畫布上進行作圖,則不要調用Lock 。
TCanvas::MoveTo
使用當前作圖位置移到點(x,y).
void __ fastrall MoveTo ( int X , int Y ) ;
在調用LineTo之前,使用MoveTo可以對畫筆位置數值進行設定。調用MoveTo的作用與設定畫筆位置屬性的作用相同。
TCamvas::Pie
用來在畫布上畫一個扇形橢圓的一部分,扇形的邊界為點(x1,y1)和點(x2,y2)確定的矩形的橢圓。
void__fastcall Pie (int X1,int Y1,int X2,int Y2,int X3,int Y3,int X4,int Y4 );
使用Pie 可以畫一個扇形。扇形的邊界為點(x1,y1)和點(x2,y2)確定的矩形的橢圓。畫出的橢圓部分由橢圓中心向外輻射的經過點(x3,y3)和點(x4,Y4)的兩條直線所確定。
使用Pen屬性的數值,可以畫出扇形輪廓;使用Brush 屬性的數值,可以對扇形進行填充。
注意:在windows95中,x1+x2 的和,以及y1+y2的和,不能超出32 768 。而且,x1+x2+y1+y2的和也不能超過32768。
TCanvas::PolyBezier
畫一簇Bezier曲線。
void __fastcall PolyBezier (const tagPOINT* Points,const int Points_Size );
PolyBezier用於根據 Points參數指定的控制點畫三次Bezier曲線。其中第一條曲線經過第一、第四點。2、3點為控制點。按順序,每條曲線需至少四個點;上一曲線的終點為下一曲線的開始點,緊接著的兩個點為控制點,第四點為終點。畫線時使用當前的筆。
可以使用Sice函數把點數組傳給PolyBezierTo方法。例如,把100 個點的前10個點畫成一條Bezier曲線,使用方法如下:
Canvas::PolyBezier(Slice(PointArray,10));
TPanvas::PolyBezierTo
畫一簇Bezier曲線並更新PenPos的值。
void__fastcall PolyBezierPo(const tagPOINT* Points ,const inty Points_Size );
PolyBezierTo 用於根據 Points 參數指定的控制點畫三次 Bezier 曲線 。其中第一條曲線經過第一、第四點,2、3點為控制點。按順序,每條曲線需至少四個點;上一曲線的終點為下一曲線的開始點,緊接著的兩個點為控制點,第四點為終點。畫線時使用當前的筆並把 PenPos 更新為最後一個點的值。
可以使用Slice函數把點數組傳給PokybezierTo方法。例如,把100個點的數組的前10個畫成一條Brzier曲線,使用方法如下:
Canvas::PolyBezierTo(Slice(PointArray,10));
TCanvas::Polygon
在畫布上畫出鏈接所有點的一系列直線,並且畫出一條從最後一點到起始點的直線以閉合圖形。
void __fastcall Polygon( const tagPOINT* Plints const int Points_Size ) ;
使用Polygon, 通過畫筆可以在畫布上畫出一個閉合的多邊形。畫出完整圖形之後,Polygon 還用Brush屬性的數值自動填充圖形。當需要畫一個多邊形而又不需要填充時,可以調用Polyline方法,只需要結尾處第二次指定起始點即可。
使用Slice函數,可以將點數組的一部分傳遞給Polygon 方法。例如 ,以100個點的數組中的開始 10 個點畫出一個多邊形,可以像以下方法使用Slice函數:
Canvas::Polygon::(Slice(PointAeeay,10)。
TCanvas ::Polyline
以當前畫筆在畫布上畫出一系列鏈接點數組中的每一個點的直線。
void __fastcall Polyline(const tagPOINT* Points.const int Points_Size ) ;
使用 Pilyline 可以在畫布上鏈接一系列的點。如果僅有兩個點,Polyline僅畫出一條直線。調用MoveTo 功能,將畫筆位置移到第一個點,然後用後面所有的點重復調用 LineTo,可以在畫布上畫出與調用 Pokyline 一樣的圖形。然而,與 LineToi不同的是,Polyine過程不能改變畫筆位置數值。
使用Slice函數,可以將點數組的一部分傳遞給Polyline方法。例如,為了鏈接100個點數組中的開始10個點,可按以下方法使用Slice函數:
Canvas::Polyine::(Slice(PointArray,10).
TCanvas::Rectangle
可以在畫布上畫出一個矩形,矩形的左上角為點(x1, y1) ,右下角為點(x2, y2)。
void__fastcall Rectangle(int X1, int Y1, int X2, int Y2, );
調用Rectangle過程,使用畫筆畫出一個矩形,並且用刷子進行填充。如要填充一個矩形區域而又不需用當前畫筆畫出邊線時,應使用FillRect方法。如果需要沒有填充的矩形區域輪廓,應使用FrameRect方法或者Polygon方法。如果需要畫出一個圓角的矩形,應使用RoundRect方法。
TCanvas::Refresh
從設備場境裡刪除Pen、Brush以及Font。
void__fastcall Refresh (void);
調用Refresh可以使畫布使用的HDC回到缺省狀態。Refresh不會改變Pen屬性、Brush屬性以及Font屬性的數值。調用Refresh後,如果HDC是被作圖方法使用的話,那麼任何作圖方法的調用,將需要為HDC重新選擇Brush、Font或者Pen。
TCanvas::RoundRect
可以在畫布上畫出一個圓角的矩形。
void__fastcall RoundRect (int X1, int Y1, int X2, int Y2, int X3, int Y3);
調用RoundRect可以使用畫筆畫出一個圓角的矩形,並且用刷子進行填充。矩形的邊由點(x1, y1)、點(x2,y1)、點(x2,y2)和點(x1,y2)確定。矩形的角被修剪以形成圓的外觀。畫一個橢圓,使用Ellipse方法。畫一個真正的矩形,使用Rectangle方法。
TCanvas::StretchDraw
在由Rect參數指定的矩形區域內,畫出由Graphic參數指定的圖像。
void __fastcall StretchDraw (const Windows::TRect& Rect, TGraphic* Graphic);
調用StretchDraw在畫布上畫出一個圖像,以便使圖像與指定的矩形區域相適應。StretchDraw過程調用圖像的Draw方法。圖像決定了如何使圖像與矩形區域相適應。這可能包括放大或者縮小比例。為了使圖像能夠按其原先尺寸畫出,應使用Draw方法。 圖像可以是點位圖、圖標或者位圖文件。如果圖像是TBitmap對象,點位圖使用CopyMode屬性的數值畫出。
TCanvas::TCanvas
創建一個TCanvas對象的實例。
__fastcall TCanvas(void);
不要直接調用TCanvas構造函數,用new來實例化一個TCanvas對象。 TCanvas為TCanvas的實例分配內存,並且為Font、Brush和Pen屬性創建TFont、TBrush和TPen對象。TCanvas還將CopyMode方法初始化為cmSrcCopy。
TCanvas::TextExtent
返回以當前字體表示的字符串的像素寬度和像素高度。
tagSIZE __fastcall TextExtent(const System::AnsiString Text) ;
使用TextExtent 可以確定字符串在圖片上占用的空間。在圖片上的諸如線條、框架以及文本的附加線等單元被放在適當的位置,以容納文本大小。僅檢查文本高度,調用 TextHeight 方法。僅檢查文本的寬度,調用TextWidth方法。
TCanvas::TextHeight
返回以當前字體表示的字符串的像素高度。
int __fastcall TextHeight(const system::AnsiString Text );
使用TextHeight可以確定字符串在圖片上占用的高度。在圖片上的諸如線條、框架以及文本的附加線等單元被放在適當的位置,以容納文本的高度。TextHeight 函數返回與TextExtent(Text )::cy 相同的數值。
TCanvas::TextOut
在畫布上從點(x,y)處開始輸出一個字符串,同時將畫筆位置修改為字符串的結束位置。
void __fastcsll TextOut( int X, int Y, const System::AnsiString text ) ;
使用TextOut 可以向畫布上輸出一個字符串。按字體的當前數值輸出字符串。使用 TextExtent 能夠確定出文本在圖片上的占用空間。為了輸出僅與剪切矩形區域相適應的文本,應使用權TextRect 方法 。
TCanvas::TextRect
在一個剪切矩形區域內輸出一個字符串。
void __fastcall TextRect(const Windows::TEect& Rect,int X,int Y,const System::AnsiString Text);
使用TextRect可以在一個限制的矩形區域內輸出一個字符串。字符串落在由Rect 參數指定的矩形區域外的任何部分將被剪切且不顯示。文本的左上角位於點(X,Y) 。
TCanvas::TextWidth
返回以當前字體表示的字符串的像素寬度。
int __fastcall TextWidth(const system::AnsiString Text);
使用TExtWidth 可以確定字符串在圖片上占用的長度。TextWidth 函數表明給出的字符串是否與可用空間相適應。在圖片上的諸如線條、框架以及文本有附加線等單元被放在適當的位置,以容納文本的寬度,Textwidth返回與TextExtent(Text)::cx相同的數值。
TCanvas::TryLock(void);
除非調用了 UnLock 方法,否則調用 TryLock 可以避免其他線條在畫布表面上輸出。調用Lock方法需要配套使用,每調用一次 Lock 方法必須一後面調用 UnLock 方法相匹配。如果畫布沒有鎖定,那麼對TryLock函數的調用僅需與調用一次UnLock方法相匹配。如果畫布是開啟的,調用TryLock函數將鎖守畫布,將LockCount 屬性值設為1、返回True 值。如果畫布被鎖定,調用TryLock 函數不產生任何變化,返回False值。
在試圖改變畫布之前,調用 TryLock 函數可能妨礙由 Lock 和 UnLock 平共處成對調用方法保護的其他代碼的執行。
TCancas::__fastcall Unlock(void);
使 LockCount 屬性值減少,並且允許其他線條輸出直至LockCount屬性值為0。
void __fastcall UnLock(void) ;
在以調用 Lock 方法開始的臨界區的結尾處調用 UnLock 過程。每一個對 Lock方法的調用,必須與調用 UnLock 方法相匹配。
TCanvas::OnChange
當畫布上的圖像剛發生變化時,OnChange事件發生。
__property Classes::TNotifyEvent OnChange = {read =FOnChange, write = FOnChange };
每當畫布上的圖像發生變化時,寫OnChange事件處理程序以執行特定的行為。應用程序調用TCanvas對象的一個作圖方法時,引起下列變化:
·產生一個OnChanging事件。
·調用TCanvas方法,使圖像發生變化。
·產生一個OnChange事件。
OnChange事件是在圖像產生變化時產生,而不是畫布屬性產生變化時產生。應用程序中對Font屬性Brush屬性和Pen屬性的變化,可以通過設定OnChange事件處理程序以產生相應的TFont對象、TBrush 對象和TPen對象。然而,TCanvas對象為這些對象設定了其自身的OnChange事件處理程序。在指定這些對象的OnChange事件處理程序之前,首先讀出現在的事件處理程序。使用讀出的數值。從新事件處理程序調用TCanvas對象的事件處理程序。
TCanvas ::OnChanging
當畫布上的圖像剛要發生變化時,OnChanging事件發生。
__propenty CIasses::TNotifyEvent OnChanging = {read =FOnChanging, write = RonXhanging};
在畫布上的圖像發生變化之前,寫OnChanging事件處理程序以執行特定的行為。當應用程序調用TCanvas對象的一個作圖方法時,引起下列變化:
·一個OnChanging事件發生。
·調用TCanvas方法,使圖像發生變化。
·一個OnChange事件發生。