AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C++

TCanvas

51自学网 http://www.wanshiok.com


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事件发生。

 
 

上一篇:TBits(单元Classes)  下一篇:TClipboard