计算机世界1999年第2期

RECT在Delphi中的灵活使用

辽宁省铁岭县李千户中心校 金凤霞

  Delphi为用户提供了一个方便的绘图环境, 即某些控件的CANVAS属性(画布)。用户可以把某些控件的表面作为一张画布, 在上面绘制各种图形或显示图像, 但在CANVAS的使用过程中少不了一个特殊对象, 那就是矩形RECT, 灵活使用它会完成很多特殊的功能, 为Delphi编制的Windows程序增加活力。

RECT的特点

  RECT既是一个特殊的数据结构,又是一个函数,它的作用就是定义一个矩形区域对象, 而作为函数使用时它可以用两个属性(Tpiont型)指明区域范围, 同时也可分解成四个单一的变量类型(Integer型),即: ·topleft:左上角坐标(Tpiont型变量); ·bottomright:右下角坐标(Tpiont型变量); ·topleft.x或left:左上角横坐标; ·topleft.y或top:左上角纵坐标; ·bottomright.x或right:右下角横坐标; ·bottomright.y或bottom:右下角纵坐标。 例如,下面三种方法定义一个相同的RECT变量:

  Rect(10, 10, 110, 210);

  topleft:=Piont(10,10);

bottomright:=Point(110,210); left:=10;top:=10;right:=110;Bottom:=210; 下面的代码在Form1窗体上定义一个RECT矩形并用红色填充: var

 

NewRect: TRect; begin
NewRect := Rect(20, 30, 50, 90);
Form1.Canvas.Brush.Color := clRed;
Form1.Canvas.FillRect(NewRect); end; 从上面可以看出, RECT只是一个通用变量, 它并不属于任何控件本身, 定义之后可由任何具有CANVAS属性的控件使用, 以指明某控件表面的一个矩形区域, 并且程序运行过程中可随意修改尺寸和位置。

RECT操作命令

  ·Rect(x1,y1,x2,y2):定义Rect区域范围。 ·FillRect(rect:Trect): 用填充色填充Rect区域。 ·FloodFill:用填充色填充Rect之外区域。 ·textrect(Rect:TRect;X,Y:Integer;const Text:string):在Rect对象中显示文本, 其中的X、Y为显示文本的坐标值,是相对于画布的坐标而不是相对于RECT的坐标;const为显示的字符个数;string为待显示的字符串,只有在RECT内的字符才能显示出来, 超出部分不显示。 ·stretchdraw(const Rect:TRect;Graphic:TGraphic):把图像文件填充到Rect之中, 并且图像按RECT的尺寸自动伸缩, 其中的Graphic可为BMP或ICO等图像资源。 ·font.size:定义画布上显示文字的尺寸。 ·font.color:定义画布上显示文字的颜色。 ·textwidth:返回字符串的长度。 ·textheight:返回字符串的高度。 ·Brush.Color:定义画布的填充颜色。 ·Copyrect(Dest:TRect;Canvas:Tcanvas;Source:TRect):把图像从一个矩形中拷到另一个矩形之中, 并且按目标矩形尺寸自动伸缩, 其中,Dest为目标画布矩形,Canvas为源画布,Source为源矩形。 由于上述命令均是基于画布本身使用的, 所以具体使用时必须加上控件及画面属性,例如下面的代码:

  var

TheRect: TRect; begin
TheRect.Top := 10;
TheRect.Left := 10;
TheRect.Bottom := 100;
TheRect.Right := 100;
Form1.Canvas.TextRect(TheRect,0,0,‘Hello,
world!’); end;

应用实例

  本文利用RECT完成四种特殊屏幕效果的制作, 分别为平滑渐变窗口、背景字符串的随机显示、百页窗式显示图像及图像的平铺显示,主要使用了RECT的颜色填充、字符串显示、矩形图像的拷贝等命令,具体实现方法并不复杂,所需要控件及程序代码请见文后程序(见编者注)。该程序运行之后首先通过OpenDialog窗口指定一个图像文件, 可为BMP 位图文件或 ICO图标文件。如果演示百页窗式的图像显示,最好使用接近全屏的大幅图像, 而图像的平铺显示可选用小一些的图像。然后按下按钮1,则初始化窗口为自上而下由黑到蓝的平滑窗口, 全屏幕方式效果更好; 按下按钮2 则在窗口内随机显示字符串, 其背景、文字颜色以及位置都是随机变化的; 按下按钮3 则演示百页窗式显示图像方法;按下按钮4 实现图像的平铺显示;按下按钮5退出程序。以上方法及程序在Windows 95、Delphi2.0 环境下调试通过。

  

back.gif (1185 字节)