当前位置:首页 > 网络编程 > 软件语言 > DELPHI > RECT在Delphi中的灵活使用

RECT在Delphi中的灵活使用

点击次数:44 次 发布日期:2008-11-09 08:38:43 作者:源代码网
源代码网推荐
广告载入中
金凤霞
源代码网推荐
源代码网推荐 ----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;constText:string):在Rect对象中显示文本,其中的X、Y为显示文本的坐标值,是相对于画布的坐标而不是相对于RECT的坐标;const为显示的字符个数;string为待显示的字符串,只有在RECT内的字符才能显示出来,超出部分不显示。
源代码网推荐 stretchdraw(constRect: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退出程序。以上方法及程序在Windows95、Delphi2.0环境下调试通过。
源代码网推荐 ----编者注:本文源程序代码发表在本报WWW站点上,地址是:http://www.computerworld.com.cn/98/skill/default.htm。欢迎访问!
源代码网推荐 用VB5设计适应性界面
源代码网推荐 北京1840信箱计算中心(102205)--杨春生
源代码网推荐 --------------------------------------------------------------------------------
源代码网推荐 ----在设计应用软件时,设计者总希望设计的软件,无论显示器分辨率设置是640×480、800×600还是1024×768,无论显示器设置是在大字体还是在小字体,都能正常运行,且具有美观一致的界面。本文介绍笔者解决这些问题的方法,供参阅。
源代码网推荐 使界面居中
源代码网推荐 ----为了使界面元素能在各种显示分辨率下均有合理的布局,可以采用两种方法。一种是获取当前显示分辨率,并根据这一分辨率计算界面各元素的位置和大小来进行设置。这种方法虽然能解决界面元素布局问题,但需要知道每个元素的位置和大小,程序烦琐。另一种方法是先设计一个具有极大化、无边界、无标题、无控制盒的窗体,然后在其上放置一个容器控件Picture,在Picture中再放置其他控件。在窗体Load事件中根据当前的显示分辨率居中Picture,从而实现了居中整个界面。具体代码如下:
源代码网推荐    Private Sub Form_Load()
源代码网推荐     Call CenterControl(Picture1)


源代码网推荐    End Sub
源代码网推荐    Public Sub CenterControl(obj As Object)
源代码网推荐     Dim cx, cy As Single
源代码网推荐     cx =(Screen.Width/Screen.TwipsPerPixelX -obj.Width)/2 #
源代码网推荐     cy =(Screen.Height/Screen.TwipsPerPixelY -obj.Height)/2 #
源代码网推荐    obj.Left = cx
源代码网推荐     obj.Top = cy
源代码网推荐    End Sub
源代码网推荐 使界面适应大字体与小字体
源代码网推荐 ----Win95在创建控件时,根据当前显示属性为大字体或小字体来作相应调整。尽管应用程序传送的参数(控件位置和尺寸)是一致的,但实际控件的位置和尺寸在这两种情形下并不一样。如果应用程序仅仅考虑一般小字体的情况,在大字体下界面则十分难看混乱,甚至无法操作。为解决这一问题,可通过系统注册表来了解当前显示器设置。下面的程序采用了另一种方法:在一个映射模式为Pixel的窗体中放置一个控件,在显示属性为小字体的设计环境下首先看一下控件的初始位置x、y,然后在窗体的Load事件中计算出x和y方向的放大比例xFac、yFac:
源代码网推荐    Private Sub Form_Load()
源代码网推荐     xFac = 400 # / mmlhwnd.Left
源代码网推荐     yFac = 400 # / mmlhwnd.Top
源代码网推荐    End Sub
源代码网推荐 ----其中:mmhwnd为放置在窗体中的控件,初始坐标为400、400。
源代码网推荐 ----最后在各个需要调整界面的窗体Load事件中调用下列子程序,调整各控件的位置与大小:


源代码网推荐    Public Sub CorrectForm(fm As Form)
源代码网推荐    Dim C As Control
源代码网推荐    For Each C In fm.Controls
源代码网推荐 If TypeOf C Is Timer Then
源代码网推荐     ElseIf TypeOf C Is CommonDialog Then
源代码网推荐     ElseIf TypeOf C Is Line Then
源代码网推荐     C.X1 = C.X1 * xFac
源代码网推荐     C.Y1=C.Y1 *yFac
源代码网推荐     C.X2=C.X2 *xFac
源代码网推荐     C.Y2=C.Y2 *yFac
源代码网推荐     Else
源代码网推荐     C.Left=C.Left *xFac
源代码网推荐     C.Top=C.Top *yFac
源代码网推荐     If TypeOf C Is SSCommand Then
源代码网推荐     C.Width=C.Width *xFac
源代码网推荐     C.Height=C.Height *yFac
源代码网推荐     C.FontSize=C.FontSize *xFac
源代码网推荐     ElseIf TypeOf CIsCommandButtonThen
源代码网推荐 C.Width=C.Width *xFac
源代码网推荐     C.Height=C.Height *yFac
源代码网推荐     C.FontSize=C.FontSize *xFac
源代码网推荐     ElseIf TypeOf C Is ListBox Then
源代码网推荐     C.Width=C.Width *xFac
源代码网推荐     C.Height=C.Height *yFac
源代码网推荐     C.FontSize=C.FontSize *xFac
源代码网推荐     ElseIf TypeOf CIsComboBox Then
源代码网推荐     C.Width=C.Width *xFac
源代码网推荐     C.FontSize=C.FontSize *xFac
源代码网推荐     End If
源代码网推荐     End If
源代码网推荐     Next C
源代码网推荐     End Sub
源代码网推荐 ----上述程序中仅列举了几个典型的控件,如果窗体中还有其他类型的控件,可仿造上述程序加入


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华