分享
 
 
 

TCanvas类

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

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的实例。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有