delphi 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的作用与设定画笔位置属性的作用相同。

http://www.cnblogs.com/hssbsw/p/3335622.html

TCanvas 类属性及方法的更多相关文章

  1. GDI+ —— Tcanvas 类属性及方法.......

    delphi TCanvas类 类关系   TObject-> TPersistent   对那些作图对象,可使用TCanvas对象作为画布.标准的window控件,例如编辑控件和列表框控件,当 ...

  2. python 类属性与方法

    Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...

  3. python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)

    介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的方式 有时候需要給类添加额外的东西,有些东西很频繁,每个类都需要,如果不想反复的复制粘贴到每个类,可以动态添加. # coding=u ...

  4. python从入门到大神---1、初始化实例、类属性、方法

    python从入门到大神---1.初始化实例.类属性.方法 一.总结 一句话总结: 方法不加括号是代码段:感觉python方法和js,php很类似,不加括号是代码段,加括号变成方法,比如f,f() 1 ...

  5. python干货-类属性和方法,类的方法重写

    类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来 ...

  6. python类的使用(类定义,构造器,类属性,方法)

    注:这里只描述使用方法,具体类的概念长篇大论就不要为难我这个懒人了. 总之一句话编程语言只是一个工具,会用就行,好用就行.打破砂锅问到底,我觉得有必要研究一下C,汇编,电子链路等. class clt ...

  7. Python全栈开发之7、面向对象编程进阶-类属性和方法、异常处理和反射

    一.类的属性 1.@property属性 作用就是通过@property把一个方法变成一个静态属性 class Room: def __init__(self,name,length,width,he ...

  8. Python 进阶_OOP 面向对象编程_类属性和方法

    目录 目录 类属性 调用类属性 查看类属性 特殊的类属性 类方法 真构造器 __new__ 类属性 在理解类属性之前要先搞清楚 实例属性 和 函数属性 之间的区别: 1. 实例属性:指的是实例化类对象 ...

  9. Python 类属性和方法

    import types class Dog(object): __slots__ = ("name", "color", "info") ...

随机推荐

  1. NOIP模拟 cube - 数学

    题目原文: 豆豆还是觉得自己智商太低了,就又去做数学题了.一看到题,他就觉得自己可能真的一点智商都没有.便哭着跑来像 dalao 求教:如果存在正整数 A,B ,满足 A3 - B3 = x ,则称质 ...

  2. TextView中实现跑马灯的最简单方法

    几行代码实现跑马灯效果,效果如下: 因为很简单,所以就直接贴代码喽 <TextView android:id="@+id/item1_title_message" andro ...

  3. 【严肃脸】使用caffe实现色情图片的识别

    前言 前几天看到了雅虎开源了一个色情图片的识别模型新闻,上Github一看,是基于caffe的.试了试,模型效果很赞.Github地址:https://github.com/yahoo/open_ns ...

  4. MFC下WM_NOTIFY消息处理流程

    参考文章:MFC的消息反射机制 在前一篇文章:MFC消息处理流程概述中描述了MFC消息处理的大体流程.由CWnd::OnWndMsg函数可知,当消息为WM_NOTIFY消息时,调用的是virtual ...

  5. 求 1~n 之间素数的个数

    求1到n之间素数的个数 1. 筛选法 筛选掉偶数,然后比如对于 3,而言,筛选掉其整数倍数:(也即合数一定是某数的整数倍,比如 27 = 3*9) int n = 100000000; bool fl ...

  6. Arcgis api for javascript学习笔记(4.6版本) - 二维MapView中的FeatureLayer显示标注

    4.6版本api的FeatureLayer中有提供 labelsVisible 和 labelingInfo 两个属性,设置这两个属性可以实现显示将属性中某个字段作为标注.但是这两个属性只针对三维Sc ...

  7. Function函数

    一般大家都用这个写法来定义一个函数: function Name([parameters]){ functionBody }; //alert(typeof Name) // Function 当我们 ...

  8. 10.24的注意事项——解决linux_jni编译错误的问题

    公司以opus开源库.因此,我们遇到了一些问题. 我将新下载的opus1.1替换掉老版本号之后,单独编译opus没问题.但是编译相关的文件就会报错. 错误信息例如以下: g++ -Wall -fPIC ...

  9. Clojure实现的简单短网址服务(Compojure、Ring、Korma库演示样例)

    用clojure写了一个简单的短网址服务(一半抄自<Clojure 编程>).在那基础上增加了数据库,来持久化数据. 功能 用Get方法缩短一个网址: 然后在短网址列表就能够查看了, 接下 ...

  10. 可视化利器 —— t-SNE(matlab toolbox 的使用与解释)

    t-SNE – Laurens van der Maaten(感谢学术男神们的无私开源) User_guide.pdf(用户指南) 1. tsne 函数 mappedX = tsne(X, label ...