TCanvas类
2008-03-08 12:40:18 来源:WEB开发网核心提示:TCanvas为作图对象提供一个抽象的画布, 类关系 TObject->TPersistent 对那些作图对象,TCanvas类,可使用TCanvas对象作为画布,标准的window控件,则对这样的设备场境进行Pixels 属性设置是没有用的, 注重: Pixels属性仅对位于当前Cliprect 数值内的像
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的实例。
更多精彩
赞助商链接