说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

RECT在Delphi中的灵活使用

HTML文档下载 WORD文档下载 PDF文档下载
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;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

----其中:mm\hwnd为放置在窗体中的控件,初始坐标为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

----上述程序中仅列举了几个典型的控件,如果窗体中还有其他类型的控件,可仿造上述程序加入。

动态改变屏幕分辨率-Delphi资料 动态建立不常用的对象-Delphi资料 对控制面板进行操作-Delphi资料 返回程序执行参数-Delphi资料 防止 Win95 显示严重错误-Delphi资料 改变操作系统日期-Delphi资料 改计算机名-Delphi资料 关闭 Windows-Delphi资料 关闭外部应用程序-Delphi资料 监视剪贴板内容-Delphi资料 检测磁盘是否变化-Delphi资料 检测驱动器容量-Delphi资料 检查驱动器是否就绪:-Delphi资料 建立简单的任务栏应用程序-Delphi资料 将程序放在Windows启动中-Delphi资料 将光标限制在某区域-Delphi资料 将文件放入回收站-Delphi资料 禁止用户切换任务-Delphi资料 控制面板大全-Delphi资料 控 制 系 统 菜 单-Delphi资料 拦截消息处理过程-Delphi资料 利用API函数开发DELPHI程序三例 利用Hook技术实现键盘监控-Delphi资料 利用浏览窗口 DragDrop 任意文件-Delphi资料 利用未公开函数实现Shell操作监视-Delphi资料 妙用Delphi的标识号 判断Windows类型和版本-Delphi资料 判断一个程序是否dos版本:-Delphi资料 屏蔽系统按键-Delphi资料 屏幕抓字技术揭密(转载)-Delphi资料 启动控制面板-Delphi资料 java 的环境配置,请高手指教! 如何判断一个1024的int数组的所有元素的值全部小于50。寻求高速算法。 有谁看过Charles Petzold的《Programming Microsoft Windows with C# 》和Jeffrey Richter的《Applied Microsoft.NET Framework Programm 如何把图标加到 dll 文件中! 求助!!!哪儿能下载到VB高级编程的详细参考资料? 如何得到光标在编辑框中的位置?一个笨笨的问题 请教select函数用法!!!!! 关于日期计算的的错误!请关注!! 韩国人踢进八强 和 中国人相互掐架(转帖) vb中怎么动态生成按钮 如何修改Internet option/home page中的address CSDN如何上传文件啊? 请教c++的问题 滴水之恩,涌泉相报!!! REALPLAY不出声音 我想考scjp,不知道那个证有没有用? 哪儿有这样的软件? 电脑游戏与电子游戏 哪位有CRC-CCITT的表格,计算法就不必了 电子游戏与电脑游戏 如何用ASE12.5构建ODBC数据源并用ASP连接调用它? 关于c#版csdn助手的数据连接问题 有没有点击表头排序的listview控件? 我不会了(EDIT BOX问题),在线等 Delphi 用VB做数据库,同时保证远程SQL SERVER和本地ACCEE的同时更新,当远程连接不通时应该怎样做才能在本地顺利运行,而网络通畅时又能保证数 fopen与_open什么区别? 谁能推荐一个专注于编程、高手林立的的linux论坛? 指针???????? 请教在座各位sql server高手一个关于bcp命令的问题 奇怪的多线程与CListCtrl的问题! 特急!~~~!!寻求帮助! 请问vb里面用菜单编辑器作的菜单,怎么加图标啊? 男女关系的33个妙喻(转) 那位高手知道怎样绑定data grid 和 sql server 中的表 急 關於Ultra Edit編輯Java try! 有用C#做数据库编程的朋友给点经验 wonderful ASP 请问,知道对方IP地址(对方是98 有共亨之类的)如何能读写的对方的文件 关于ram、rm文件: 请问各位大虾,两个日期相减应该怎么做呀?比如2002年6月20日减去2001年10月15日 还很奇怪:我的笔记本的网卡物理地址(physical address)是:00-00-00-00-00-00 關於Ultra Edit 关于目录共享的问题>>>>>>>>>>>>>>>>> 菜鸟的第3个问题 :( 请问高手内存分配的问题? 有没有方法使含有JAVA APPLET的网页下载到客户端后,可以脱离网页独立运行! 有关事务的范围 PE文件资料 特急!寻求帮助!课程设计帮忙做一下! 一项工程,甲乙合作5天完成,甲队独做12天完成.两队合作,乙对因故停工3天,完成时,甲乙合作了几天?【答案是四分之十三,和原因!不用方程!】 关于老师外貌的作文是关于老师外貌的 不要其他的 写出来让老师认为是自己写的 不是超的 外貌写啥都行 我改改就行了 很急 ! 今晚就要 一道勾股定理题有一梯子长2.5米,靠在垂直的墙面上,梯子的底端离墙根0.7米,若梯子顶端下滑0.4米,那么梯子底端到墙根到底多少米? 谁有关于有趣的汉字的作文 一本故事书,原来每页排576字,排了25页,再版时字体改小了,每页比原来多排124字,要拍多少页? 揭阳邱金元纪念小学三〈1〉《秋天的美景》作文300字 关于有趣的汉字作文 一本书稿,原来每页576字,排了125页.现在改用小号字,每页比原来多排144个字,能排多少页(方程)急! 小明读一本书,第一天看了全书的15分之2,第二天比第一天多看6页.这时还乘全书的10分之7,这本书有多少页 有趣的汉字作文400急!急!急! 数原学题一本故事书,原来每页排576字,排了25页.再版时字改小只需18页.现在每页比来多排多少字?l列方程式解答 下面的数表示什么意义.1、今天的温度-5度~+10度 2、小明回家往北走了—800米.3、王叔叔今年的收入—2000 关于中国的英语作文法尔范我我我 一本故事书,原来每页排576个字,排了25页.再版时字体改小了,每页比原来多排224个字,要排多少页? 王叔叔干活真有一手的手什么意思 A城有化肥200吨,B城有化肥300吨,现要将化肥运往C、D两村,C村需要化肥220吨,D村需要化肥280吨.已知A、B对于这个问题的答案有点谬误,如果我设X为任意大于0的数字,这个答案就是个错误答案,而包 一本故事书原来每页576字,排了25页.改版后每页比原来多排124字,要排多少字?急死了 一道勾股定理的题葛藤是一种聪明的植物,它自己腰杆不硬,为了争夺雨露阳光,常常沿着树干盘绕而上,它还有一手绝招,就是它绕树盘升的路线总是沿最短路线———螺旋前进的,难道植物也懂 关于四级英语作文的写法? 四书五经分别指什么?四书:—————— 五经“—————————— 刘叔叔的存款是王叔叔的6倍,如果刘叔叔取出1100元,王叔叔存入1100元,那么王叔叔是刘叔叔的两倍.原来各多少元? 四书五经的四书是指什么?五经是指什么?作者各是谁? 小丽,小敏,小华,小珍四人参加跳绳比赛,并分别获得前四名.甲说:"小李第二名,小丽、小敏、小华、小珍四人参加跳绳比赛,并分别获得前四名.甲说:“小李第二名,小敏第三名;乙说:小华第 小华和小丽同时从两地沿一条公路相对走来.小华每分钟走65米,小丽每分钟走70米,俩 请问“四书五经”中“四书”是指什么?“五经”又是指什么? 小丽、小敏、小华、小珍四人参加跳绳比赛、并分别获得前四名.小丽、小敏、小华、小珍四人参加跳绳比赛,并分别获得前四名.甲说:“小丽第二名,小敏第三名;乙说:小华第二名,小敏第 一道似乎跟勾股定理有关的题一个等腰直角三角形,他的底和高都是30CM,求另一条斜边的面积.丘陵一条斜边的长度,不好意思,打错了 描写好朋友的结束句怎么写? 关于有趣的汉字的作文字谜和谐音笑话 小丽、小敏、小华、小珍四人参加跳绳比赛,并分别获得前四名.甲说:“小丽第二名,小敏第三名.小丽、小敏、小华、小珍四人参加跳绳比赛,并分别获得前四名.甲说:“小丽第二名,小敏第三 请问描写好朋友的诗句有那些 有趣的汉字的作文怎么写?就像第五单元里的课文一样 英语选择题被选项序号是小写,我选择答案用大写还是小写英语选择题选项序号是小写的时候,我选答案用大写还是小写啊? 杯子里的牛奶洒出来了怎么办? 英语中yuan可以加s吗 英语选择题的备选项序号不管是大写或者小写,选择答案时也无所谓用大写或者小写是吗?如题,如果被选项序号是小写的时候是小写字母,漏打了 一个小 英语翻译:a small strawberry hamberger is just 2.5 yuan for 4 yuan 种翻英时,中国人民币的标志''yuan"在数字后面时,首字母需不需要大写? 五年级上册第五单元有趣的汉字作文400字写清楚点!不要抄的. 四书是指哪四书 It’s 72.80 yuan.英语怎么读这个点字.It’s 72.80 yuan.英语怎么读这个点字.It's seventy-two ______ eighty yuan.是用It's seventy-two ___point___ eighty yuan。还是用It's seventy-two ___point___ eight yuan 给我5篇得与失作文 四书 是指哪四书? 50 yuan要不要加s了快快那美元什么的 求五年级有趣的汉字作文要500字.要写好开头 四书是指 “十佳少年”指哪“十佳”? 怎么写台灯急! 四书是指什么? 十佳少年简介与事迹一般用哪个人称?用怎样的格式?写不写自己的荣誉?乐于助人的朋友可以帮个忙吗? 我失去了—— 作文 看说明书做玩具小台灯的作文笨蛋别发 ★四书五经是哪四书哪五经?…★★四书五经是哪四书哪五经?分别出自何人之手?成书于何时?★四书五经的主要内容大致是什么?分别介绍. 作文 假期中的得与失500字左右、中学生的作文., 看说明书做小台灯作文600字 可以详细点,但不要太啰嗦. 作文——有趣的汉字 上课时的我作文 老师让写对老师的要求 怎样对你 看说明书做玩具小台灯的作文怎么写 有趣的汉字活动作文 描写老师上课时的文章
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘