全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

全球彩票注册平台图形设计,类属性及方法

10.2  图 形 设 计
       Windows是四个基于图形客户分界面包车型地铁操作系统。

绘图须求有纸、画笔、画刷; Delphi 有 Canvas、Pen、Brush.

在鼠标移动事件中画当前点的十字坐标线时,为抹掉老线常使用刷新画面包车型地铁主意,这样就产生了十二分严重的闪光现象。由此,我们运用在画新线前将老线抹去的章程就会很好的缓慢解决这么些难点,并且速度非常的慢。
  OldX, OldY: Longint;// 使用前起初化OldX:=-1;     
 
procedure TfrmMain.PaintBoxCMouseMove(Sender: TObject; Shift: TShiftState;    
  X, Y: Integer);    
 
  Procedure DrawCross(AX, AY: Integer);    
  begin   
    With PaintBoxC.Canvas do   
    begin   
      Pen.Color := CrossColor;    
      Pen.Style := CrossStyle;    
      Pen.Mode := pmXor;    
      Pen.Width := 1;    
      MoveTo(AX, 0);    
      LineTo(AX, PaintBoxC.Height);    
      MoveTo(0, AY);    
      LineTo(PaintBoxC.Width, AY);    
    end;    
  end;    
 
begin   
  if (OldX <> -1) then   
  begin   
    DrawCross(OldX, OldY); { 画旧十字线 }   
    OldX := -1;    
  end;    
  { 检查当前鼠标点是或不是在钦命范围内 }   
  if PtInRect(Rect(0, 0, PaintBoxC.Width, PaintBoxC.Height), Point(X, Y)) then   
  begin   
    DrawCross(X, Y); { 在当下鼠标点画十字线 }   
    { 保存旧鼠标点 }   
    OldX := X;    
    OldY := Y;    
  end;    
end; 

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   将画布上的图像与反转的源位图实行OQashqai操作   
cmNotSrcCopy   复制反转的源位图与画布   
cmNotSrcErsae   将画布上的图像与源位图进行OR操作,然后再反转   
cmPatCopy   复制源式样至画布   
cmPatInvert   将画布上的图像与源式样实行XOEvoque操作   
cmPatPaint   使用O奥迪Q5操作使反转的源位图与源式样结合,并将操作结果与画布上的图像举行OHaval操作   
cmSsrcAnd   将画布上的图像与源位图进行AND操作   
cmSrcCopy   复制源位图至画布   
cmSrc伊Russe   将画布上的图像举行反转,然后将其与源位图举行XO福睿斯操作   
cmSrcInvert   将画布上的图像与源位图进行O大切诺基操作   
cmWhiteness   用灰褐填充画布上的矩形指标   

TCanvas::Font   
当在图像上写的公文时,使用Font属性钦点使用文本的字体   
__property   TFont*   Font   =   {   read   =   FFont,   write   =   SetFont   }   ;   
对图像上的公文,使用Font属性能够内定使用文本的书体。Font   属性的数值是T罗恩t   对象。设置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)处的矩形区域。   
图像可以是点位图、Logo也许图元文件。借使图疑似三个Bitmap对象,点位图通过运用CopyMode方法的数值输出。   

TCanvas::DrawFocusRect   
画二个矩形框,常常用于表示矩形内的控件对象具有输入大旨。   
void __fastcall   DrawFocusRect(   const   Windows::TRect   &Rect   )   ;   
当控件得到或失去输入主题时,调用DrawFocusRect能够画出控件图片的边框。因为DrawFocusRect使用XOLX570成效,由此,当第一次调用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的效果与利益与设定画笔地方属性的意义同样。

 

在DELPHI为编制程序者提供了多个心灵手巧的绘图场面,即本文所述的    
CANVAS类,在DELPHI中的相当多控件都富有此属性,使编制程序者能够    
在那些的控件的外表随性所欲的绘图,那对健全客商分界面只怕制    
作一些显示屏特殊手艺都有着超导的效果与利益,下边比如表明二种奇特荧屏    
意义的演进经过。    
   
一、CANVAS必备基本知识:    
   
1.享有CANVAS属性的控件:    
TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBox,TDirectoryListBox,  
TDrawGrid,TFileListBox,TForm,THeaderControl,TImage,TListBox,TOutline,  
TPaintBox,TPrinter,TStatusBar,TStringGrid等,    
   
2.CANVAS属性及命令:篇幅所限,省略参数及格式表达,具体请仿照效法文后程序及DELPHI扶助文件:    
   
canvas.rectangle():画矩形pen.color:定义画笔颜料    
roundrect():画圆角矩形pen.width:定义画笔宽度    
arc():画弧线(不填充) brush.color:定义填充颜色    
chord():画弧线(填充) textout():在固化地点输出字符串    
pie:画扇形 textwidth:取字符串中度    
polygon():画多边形填充textheight:取字符串宽度    
polyline():多点连线(不填充)font.color:钦赐字体颜色    
Pixels():钦点固定象素点颜色值font.size:钦点字体大小    
moveto():指明画线源点 Ellipse():画圆或椭圆    
lineto():指明画线终点    
   
   
3.接纳CANVAS注意事项:当窗口进行重画时,画布上的图像将消    
失,举例当窗口进行最小化又重新回升时,就能引起画布上海体育地方像    
的收敛,别的当刚刚运维程序时,窗口也是属于重复绘制,所以    
假使在绘制窗口从前在画布上制图,弹出窗口后将不可能呈现出图    
像,譬喻在TForm1.FormCreate()事件中开展画布绘图操作将是    
蚍蜉撼大树的,但足以在这一件事件中张开画布操作的备选职业,例如设置    
画笔的水彩和宽窄等。    
   
二、CANCAS应用比方:    
   
1.为控件扩张阴影或投影效果:基本原理就是在选拔该控件的父    
控件比方FORM或然其他容器控件的CANVAS,在要求修饰的控件周    
围适当处填加图像,通过线条及颜色的合理性达配,使控件与周围的    
图像融为一炉,形成非常的视觉效果,具体操作时需求依赖被修饰    
控件的TOP、LEFT、WIDTH、HEIGHT等属性,明确供给画线的起    
点和终点坐标,那样操作无论被修饰控件地方及尺寸怎么样变迁,    
都足以确认保障投影及影子效果完美的兑现;比方可在窗口中树立三    
个按键,然后在按钮2和开关3的CLICK事件中填加如下代码,之    
后按下开关2或开关3即便按键1变幻莫测投影和影子效果:    
   
   
procedure TForm1.Button2Click(Sender:TObject);    
var    
x,y,i:integer;    
begin    
x:=0;y:=0;    
form1.canvas.pen.width:=1;    
fori:=0to8do    
begin    
form1.canvas.pen.color:=$00a0a0a0;    
form1.canvas.moveto(Button1.left Button1.width x,    
Button1.top y);    
form1.canvas.lineto(Button1.left Button1.width x,    
Button1.top button1.height y);    
form1.canvas.pen.color:=$00606060;    
form1.canvas.moveto(Button1.left x,    
Button1.top Button1.height y);    
form1.canvas.lineto(Button1.left Button1.width x,    
Button1.top button1.height y);    
x:=x 1;    
y:=y 1;    
end;    
end;    
   
procedure TForm1.Button3Click(Sender:TObject);    
var  

    若要在窗口上绘制,要求调用Windows 提供的应用程序接口(Application Program Interface,API),还要申请和维护句柄等财富。

Canvas  :就是画布, 比如窗体的 Canvas 属性, 正是窗体的画布;
Pen :是画笔, 能够安装笔色、笔宽等等;

...

x,y,i:integer;    
begin    
x:=0;y:=0;    
form1.canvas.pen.width:=1;    
fori:=0to8do    
begin    
form1.canvas.pen.color:=$00404040;    
form1.canvas.moveto(Button1.left Button1.width x,    
Button1.top 8);    
form1.canvas.lineto(Button1.left Button1.width x,    
Button1.top button1.height 8);    
form1.canvas.moveto(Button1.left 8,    
Button1.top Button1.height y);    
form1.canvas.lineto(Button1.left Button1.width 8,    
Button1.top button1.height y);    
x:=x 1;    
y:=y 1;    
end;    
end;    
   
    
2.为控件加下边框:DELPHI中有无数控件无边框属性,利用CANVAS    
可感到随意的控件填加边框,使其大约清楚;具体操作时,可先定    
义出画笔的颜色、画笔的大幅(边框宽度),之后用polyline()命    
令依据对应控件的职位、尺寸自动定位四角坐标,一次可成功一    
个固定宽度矩形的绘图工作,假诺急需各种颜色还是持有立体效    
果的边框,可反复概念画笔颜料,画出一而再的三个矩形,通过调    
整相邻矩形的水彩来兑现特殊效果的边框绘制职业;比方在窗体    
中放置四个按键,分别在MOUSEMOVE事件中填加如下代码,之后每    
当鼠标移到对应的按键上时,相应的按键就能油不过生格外颜色的边    
框,当鼠标移到窗口空白处时,则窗口会产出显明的边线,起到特    
殊的唤起功效;    
   
   
procedure TForm1.Button1MouseMove    
(Sender:TObject;Shift:TShiftState;X,Y:Integer);    
begin    
form1.repaint;    
form1.Canvas.pen.color:=clGreen;    
form1.Canvas.pen.width:=5;    
form1.Canvas.polyline([point(Button1.left,Button1.top),    
point(Button1.left Button1.width,Button1.top),    
point(Button1.left Button1.width,Button1.top Button1.hei    
ght),    
point(Button1.left,Button1.top Button1.height),    
point(Button1.left,Button1.top)]);    
end;    
   
procedure TForm1.Button2MouseMove    
(Sender:TObject;Shift:TShiftState;X,    
Y:Integer);    
begin    
form1.repaint;    
form1.Canvas.pen.color:=clBlue;    
form1.Canvas.pen.width:=5;    
form1.Canvas.polyline([point(Button2.left,Button2.top),    
point(Button2.left Button2.width,Button2.top),    
point(Button2.left Button2.width,Button2.top Button2.hei    
ght),    
point(Button2.left,Button2.top Button2.height),    
point(Button2.left,Button2.top)]);    
end;    
   
procedure TForm1.FormMouseMove    
(Sender:TObject;Shift:TShiftState;X,    
Y:Integer);    
begin    
form1.repaint;    
form1.Canvas.pen.color:=clRed;    
form1.Canvas.pen.width:=3;    
form1.Canvas.polyline([point(0,0),point(form1.width-    
10,0),    
point(form1.width-10,form1.height-30),    
point(0,form1.height-30),point(0,0)]);    
end;    
   
   
   
3.为图形开关或其余控件安装动态援救成效,此处首要行使它的    
字符串展现效果,也正是当鼠标移到钦赐控件上时,在其相近适当    
职务显得相应的字符串,当鼠标离开时通过图像覆盖动作使字符    
串消失,也能够采取一个简短的命令完毕即form1.repaint,它的    
成效是使FORM1内的持有控件全体再度绘制,那样就可以急忙排除    
原先展现的字符;编制程序时首要使用各样控件的MouseMove()事件;    
诸如可在窗口中放置多个开关,并布置如下代码,运转之后当鼠标    
移到相应开关上时,就能在其上边呈现相应的提醒音讯,鼠标移到    
窗口空白处则会在窗口的左下角显示"OK"字样;    
   
   
procedure TForm1.Button1MouseMove    
(Sender:TObject;Shift:TShiftState;X,Y:Integer);    
begin    
form1.repaint;    
form1.Canvas.brush.color:=clGreen;    
form1.Canvas.font.size:=8;    
form1.Canvas.font.color:=$1200ffff;    
form1.Canvas.TextOut(Button1.left,    
Button1.top-15,'OPENFILE');    
end;    
   
procedure TForm1.Button2MouseMove    
(Sender:TObject;Shift:TShiftState;X,Y:Integer);    
begin    
form1.repaint;    
form1.Canvas.font.size:=8;    
form1.Canvas.brush.color:=clRed;    
form1.Canvas.font.color:=$1200ffff;    
form1.Canvas.TextOut(Button2.left,Button2.top-    
15,'EXIT');    
end;    
   
procedure TForm1.FormMouseMove    
(Sender:TObject;Shift:TShiftState;X,    
Y:Integer);    
begin    
form1.repaint;    
form1.Canvas.font.size:=12;    
form1.Canvas.brush.color:=clBlue;    
form1.Canvas.font.color:=$00ffffff;    
form1.Canvas.TextOut(0,form1.height-50,'OK');    
end;    
   
   
   
4.仿电视移动字幕或图像,用此方法制作活动字幕的主导方法是:    
先是选定两个可看作画布的控件,比如FORM或IMAGE,然后用一种    
填充颜色填满全体画布,在画布的一向地方显得三个非常前景象    
固化尺寸的字符串,在TIME汉兰达控件中定期总是改动展现字符串的    
职责,由于原先职位的字符串无法自动消失,所以供给用与填充颜    
色一样颜色的线条覆盖多余部分,那样就可以达成平滑的字幕移动    
意义;达成图像移动的点子:可预先定义Bitmap类和Rect类变量,    
在程序运维阶段创立Bitmap和Rect对象,并在Bitmap中装入指    
定的图像文件,同不常间把对象Bitmap装入Rect对象中落实图像的    
显示,然后在Timer控件中定期老是更改Rect的坐标值,并用与    
填充颜色同样的线条覆盖遗留图像部分,即能够兑现图像的谐和    
一举手一投足;选用上述措施完结的字符串或图像移动操作,其意义平稳,    
无任何闪光或抖动现象,视觉效果极佳,并且无需事先创建控    
件,完全由程序代码完成,具备非常多的长处;编制程序例如:在窗    
体中放到时间控件TIME福特Explorer1、图像框IMAGE1,定义TRECT及TBITMAP    
型变量,并在FormCreate和Timer1Timer事件中配置如下代码,    
程序运维之后即会在图像框中出现至下而上的位移字幕及图像效    
果,并从顶端未有,之后再也从底层出现;    
   
   
var{定义变量}    
Form1:TForm1;    
x,tt,l,h:integer;    
pic:Trect;    
map:Tbitmap;    
{具体动画演示代码}    
procedure TForm1.Timer1Timer(Sender:TObject);    
begin    
x:=x-1;    
tt:=tt-1;    
ifx<-160then
x:=image1.height 20;
tt:=x 80;
image1.Canvas.font.size:=18;
image1.Canvas.font.color:=$1200ffff;
image1.Canvas.TextOut(10,x,'OK字幕移动演示');
image1.Canvas.font.size:=12;
image1.Canvas.font.color:=$120000ff;
image1.Canvas.TextOut(20,x 50,'字体变色效果演示');
l:=image1.Canvas.textwidth('字体变色效果演示');
h:=image1.Canvas.textheight('字体变色效果演示');
image1.Canvas.pen.color:=clGreen;
image1.Canvas.moveto(20,h x 50-2);
image1.Canvas.lineto(20 l,h x 50-2);
pic.topleft.x:=30;
pic.topleft.y:=tt;
pic.bottomright.x:=pic.topleft.x 100;
pic.bottomright.y:=pic.topleft.y 80;
image1.canvas.stretchdraw(pic,map);
image1.Canvas.pen.color:=clGreen;
image1.Canvas.moveto(0,pic.topleft.y 80);
image1.Canvas.lineto(pic.topleft.x 100,pic.topleft.y 80)
;
end;
{以下设置动画初值}
procedure TForm1.FormCreate(Sender:TObject);
begin
timer1.enabled:=true;
timer1.Interval:=10;
x:=image1.height 20;
tt:=x 80;
form1.repaint;
image1.Canvas.brush.color:=clGreen;
pic:=Rect(0,0,image1.width,image1.height);
image1.Canvas.FillRect(pic);
pic:=Rect(-1,-1,1,1);
map:=Tbitmap.create;
map.loadfromfile('d:windows256color.bmp');
image1.canvas.stretchdraw(pic,map);
end;

    Delphi将这一体都封装在TCanvas类中,通过安装TCanvas类中的属性,调用当中的格局,就足以兑现画图效用。

Brush: 是画刷, 能够安装填充颜色等等.

//举例:
{绘制直线}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Canvas.Pen.Color := clRed; {设置画笔颜料}
  Canvas.Pen.Width := 2;     {设置画笔宽度}

  Canvas.MoveTo(10,10);      {直线源点}
  Canvas.LineTo(100,100);    {直线终点}

{这里的 Canvas 是简写, 也能够写做: Self.Canvas 或 Form1.Canvas }
end;

{矩形填充}
procedure TForm1.Button2Click(Sender: TObject);
begin
  Canvas.Brush.Color := clYellow; {设置画刷颜色, 也正是填充色}
  Canvas.FillRect(ClientRect);    {填充窗体顾客区}
end;

最佳用 TPaintBox 并在其 OnPaint 事件中绘制。并非在Image控件中Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);

 


TImage、TPaintBox、TPicture、TBitmap、TCanvas、TGraphic 的关联与差别

TGraphic 是 TBitmap 的父类, 相当多绘制函数的参数是 TGraphic, 但大家平时给函数的是 TBitmap;

TBitmap 的不少功用都是一而再自 TGraphic, 比如:
Width、Height、LoadFromFile、SaveToFile、LoadFromStream、SaveToStream;
还恐怕有 Palette(调色板)、Transparent(是还是不是透明) 等等.

TGraphic 实用举个例子:


var
  g: TGraphic;
begin
  g := TBitmap.Create;
  g.LoadFromFile('c:temptest.bmp');
  Self.Canvas.StretchDraw(ClientRect, g);
  g.Free;
end;


TCanvas 是一个绘制表面, 像画圆、画方、画笔、画刷等等都是它的功用;

控件的 Canvas 属性便是三个 TCanvas, 比方:


var
  cvs: TCanvas;
begin
  cvs := Self.Canvas;
  cvs.Brush.Color := clYellow;
  cvs.Font.Color := clRed;
  cvs.Font.Name := '宋体';
  cvs.Font.Style := [fsBold];
  cvs.Font.Size := 24;
  cvs.TextOut(10, 10, '万一的 Delphi 博客');
end;


有一点点控件未有直接给 Canvas 属性, 大家也足以经过 TCanvas 获取它的绘图表面;
漫天看得见的控件都应有有绘图表面, 不然系统是怎么画的?

举例 TPanel 和 TButton 就不曾 Canvas 属性, 未有是因为有的时候用, 若是须要能够如此:


var
  cvs: TCanvas;
begin
  cvs := TCanvas.Create;
  cvs.Handle := GetDC(Panel1.Handle);
  cvs.Pen.Width := 2;
  cvs.Pen.Color := clRed;
  cvs.Brush.Color := clYellow;
  cvs.Rectangle(5, 5, 50, 30);
  cvs.Free;
end;


再说 TBitmap, 它从 TGraphic 承袭, 同一时候又把 TCanvas 纳为友好的质量;
就此它有了管理图片和制图的重新效果与利益!

给 TBitmap 也举例吗:


var
  bit: TBitmap;
begin
  bit := TBitmap.Create;
  bit.LoadFromFile('c:temptest.bmp');
  bit.Canvas.Brush.Style := bsClear;
  bit.Canvas.Pen.Color := clRed;
  bit.Canvas.Pen.Width := 2;
  bit.Canvas.Ellipse(2, 2, 88, 66);
  Self.Canvas.Draw(0, 0, bit);
  bit.Free;
end;


TPicture 是为了管理更各类格式的图形(举个例子: ico、wmf 等)而存在的;
但它把 TGraphic、TCanvas、TBitmap 的功力通通借用过来, 所以功用更庞大.

TPicture 和 TGraphic 重复的效应(比方: LoadFromFile)皆以当中调用的 TGraphic;
但纵然要给它绘图, 必要调用: TPicture.Bitmap.Canvas.

上边包车型客车事例是用 TPicture 画了个十字Logo(呈现并保存起来):


var
  pic: TPicture;
begin
  pic := TPicture.Create;
  pic.Bitmap.SetSize(32, 32);
  pic.Bitmap.Canvas.Pen.Color := clRed;
  pic.Bitmap.Canvas.Pen.Width := 8;
  pic.Bitmap.Canvas.MoveTo(0, 16);
  pic.Bitmap.Canvas.LineTo(32, 16);
  pic.Bitmap.Canvas.MoveTo(16, 0);
  pic.Bitmap.Canvas.LineTo(16, 32);

  Self.Canvas.Draw(4, 4, pic.Graphic);
  pic.SaveToFile('c:temptest.ico');
  pic.Free;
end;


TImage 则入眼是为着显得图片, 它最首要蕴含的是 TPicture, 有了 TPicture 就有了地点的一体;
但因它是从 TControl -> TGraphicControl 传承下来的, 所以它有着了控件的主导本事(事件、音讯等等).

TPaintBox 重要用以绘图, 未有拍卖图片的力量, 所以只含有了 TCanvas;
它也是从 TControl -> TGraphicControl 承袭, 是能够互相的控件了.

很料定, TImage 比 TPaintBox 的才能庞大; 但仅就绘图来说, 如故 TPaintBox轻巧些.

 

; Delphi 有 Canvas、Pen、Brush. Canvas :就是画布, 譬喻窗体的 Canvas 属性, 便是窗体的画布; Pen :是画笔, 可以设置笔...

10.2.1  Canvas画布对象
       尽管在别的组件上都足以绘制图形,但由于许多零件上都有标题之类的文字,所以一般在窗体或面板之类的容器上制图图形。

       比方,最常用的油画容器为Form和PaintBox。那个器皿的空白区域称为画布(Canvas),使用画布类TCanvas的情势可在画布上绘制直线、弧线、矩形或圆形等各个图片。

          Canvas是TCanvas类的五个种类定义对象,称为画布对象,经常作为其余控件的叁本性质出现,不独立行使。各种控件皆有Canvas属性。举个例子,使用Form的Canvas属性就能够在窗体的专门的学问区内绘图。由于Canvas是运作时属性,在程序运转时技巧博得,所以必得写程序来成功安装。

 

Canvas的最首要质量有Pen、Brush、Pixels、PenPos等,用于定义绘制图形的品格。

1.Pen画笔
Pen画笔用于调控线条的水彩、方式、风格及拉长率。

Pen的档案的次序为TPen类,属性有Color、Mode、Style及Width。

·   Color属性:调控线条的颜料。

·   Mode属性:调整线条的方式,取值见表10-2。

表10-2 Canvas.Pen.Mode属性取值


 含   义
 
pmBlack
 总为卡其色
 
pmWhite
 总为茶褐
 
pmNop
 不改变
 
pmNot
 画布背景的相反色
 
pmCopy
 用Color属性钦点的画笔颜料
 
pmNotCopy
 画笔颜色的相反色
 
pmMerge
 画笔颜色与画布背景象的合成颜色
 
pmXor
 画笔颜色与画布背景观的异或合成颜色
 
pmNotXor
 pmXor的相反色  

·   Style属性:调节线条的作风,包罗实线、虚线和点划线等,取值见表10-3。

表10-3 Canvas.Pen.Style属性取值


 含   义
 值
 含   义
 
psSolid
 实线
 psDashDotDot
 两点一划线
 
psDash
 短划线
 psClear
 不划线,平日用于破除轮廓线
 
psDot
 点线
 psInsideFrame
 实线,Width属性大于1时
 
psDashDot
 点划线      

·   Width属性:调整线条的宽度。

Width属性的值为整型,要是所给的值小于1,则按1管理。注意,Width属性值会影响Style属性值,当Width属性值不是1时,Style属性值不能够是PsDash或PsDashDot。      比如:

  Form1.Canvas.Pen.Color:=clRed;        //设置线条颜色为草绿

  Form1.Canvas.Pen.Style:=psDashDot;     //设置线风格为点划线

  Form1.Canvas.Pen.Width:=1;                //设置线宽度为1,即细线

 

2.Brush刷子
Brush刷子用于明确图形填充的水彩及填充方式。

Brush类型为TBrush类,属性有Color、Style。

·   Color属性:鲜明图形的填充颜色。

·   Style属性:明显图形的填写情势,取值见表10-4。

例如:

本文由全球彩票平台发布于全球彩票注册平台编程,转载请注明出处:全球彩票注册平台图形设计,类属性及方法

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。