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

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

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

Docker之父Solomon Hykes谈项目开发的初衷和挑战 浪潮是如何实现单日5000台x86服务器交付互联网的? Bootstrap 3.3.0发布 版本4不再支持IE8 漏洞预警:FTP曝严重远程执行漏洞 影响多个版本Unix 【简讯】W3C小组宣布HTML5标准制定完成 AMD发布GPUPerfAPI 2.14,GPU性能检测更Easy! 开放能力升级——微信公众号登陆授权开启公测! 百度最“智能”的新型推荐技术——智能因子分解机 消灭Bug!18款最佳的问题跟踪管理应用程序 Google Analytics为什么会这么快 【MDCC 2014】Xamarin深入体验营——开发实战大揭秘 【MDCC 2014】电信技术专场:运营商与开发者如何合作共赢 【MDCC 2014】高德LBS大赛闭幕式暨颁奖典礼:下一个50亿应用花落谁家? MDCC 2014移动开发者大会开幕:全生态系统齐聚 开发者成主角 蓝港互动有限公司董事长&首席执行官王峰:移动互联网泛娱乐化趋势 多盟联合创始人&总裁张鹤:多盟DSPAN助力开发者高效变现 创新工场联合创始人汪华:移动互联网时代的跃迁式增长 阿里巴巴集团UC移动事业群总裁俞永福:AMAP Inside——更专业、更开放 《程序员+》移动应用上线 启动“2014 MDCC十大人气应用/产品评选活动” 微软开发体验与平台合作事业部大中华区DX部门总经理Srikanth Raju:基于云的跨平台开发 Facebook平台工程合作部亚太区总经理张博:通过Facebook构建下一代移动应用 Vungle工程副总裁Wayne Chan:移动视频广告的未来 友盟副总裁焦岳:2014移动互联网行业趋势&大数据的行业价值与运营支持 联发科技创意实验室副总裁Marc Naddell:以小博大的可穿戴方案 用友软件股份有限公司高级副总裁谢志华:企业互联网移动化触手可及 【MDCC 2014】英雄会晚宴——厉兵秣马,再上征程 移动开发技术与平台峰会(上):流量优化、数据管理、IM、LBS与跨平台开发 【推广、盈利与投资论坛】探寻推广与盈利新趋势 【企业移动化论坛】翻山越岭,创新突围企业移动化 解读微信与开发者双赢的开放能力 2014年10月操作系统份额:Windows 8.1份额喜人,Linux跌惨了 敬一杯“情人醉”给MM_mimi(人淡如菊),别人不要进来呀! 谁有过同样的遭遇??? 长整数除法的算法?? 关于Java Plug-in和Applet的一个问题 请求推荐有关SDK的好书!!!!!!! 我受不了了 个人主页链接如何让鼠标变成手形?谢谢! 老话题:三层结构中blob字段的存取出问题了? run-time类是怎么回事? 当多个程序对同一个文件进行读写操作,如何防止同时写入造成混乱? 求银行家算法的c程序! 请问W2K下面鼠标阴影的效果是用哪个API实现的? 我提议有编程经验的朋友们,一起来研究一种真正符合我们实际开发工作的模板 我用上kylix了!!!!!!! 请教,关于NT域用户的问题!NT账号,怎么设定唯一性呀?比如有aa的用户,我用aa登陆后,别人不能用aa同时登陆了?应该在那儿设置呀? Mfm1992?是个什么东西呀! 如何在informix/esql c中使用大事物? 如何保存收下來的email呢???!!!!! 关于一个网站建设的问题,望高手指点。 求救;如何建立一个登陆页面? 谁能给出一个远程访问互联网ACCESS数据库的经典代码?有28分送上! 怎样将-个十六进制数转换为十进制? 如何将java程序编译成dll文件 cannot focus a disabled or invisible window 一表我想通过文本框来增加记录,为何不能发送到表中,不要告诉我是没有post的原因。 奇怪,borland的开发能力这么强,为什么几乎没有一个象office那样流行的应用软件呢?如果它的应用软件很多,就不会象现在这样穷了吧? Delphi 数据库不如Power Builder 吗? 请问怎么安装新的控件? B样条曲线:如何由经过点反算控制点? Berzer曲线:如何由经过点反算控制点? 关于activereport的字符集问题 有没有计算曲线长度和交点的好方法? Install Shield For VC6怎么用???????????????????? ODBC数据库 ****有没有计算曲线长度和交点的好方法? ****Berzer曲线:如何由经过点反算控制点? ****B样条曲线:如何由经过点反算控制点? 有谁知道"边缘频率"、"中间频率"、"双频分析" 请问oicq登陆以后的住界面的我的蚝油dock是如何实现的,是什么vcl,或者自己写,如何实现?请指点! pfc的好处? 一个伪程序员的自白 不但给分,还给¥ 散分给喝过酒兄弟姐妹们(今天心情很不好,我深爱的人不爱我,苦痛,郁闷,多喝了几坛,请ghj1976、3B、roani谅解,最后一坛酒,感谢水园的朋友们) 怎样准备高程考试,还有三个月! 人生自古谁无错 -- 对青年时代的林仙儿心理活动的分析 小的大三,放暑假了,现在上海找一个单位实习,各位知情者请告知,定重谢! 请问如何让我做的程序一直在最底层呢、?? Oracle的外键是否能让所有有关联的表一起改变? 创建子窗口,子窗口又创建子窗口,在创建子子窗口时如何释放子窗口? 几个问题,能解决吗? 简单C语言字符串问题 八年级下册数学书复习题16的8~12题(过程)人教版的 推荐一些简单的英文歌曲,适合学英语的.要好听一点的,最好是安静一点的.本人英语不太好~不要太慢的、想my love的速度差不多. 初中英语完形填空Two men were ( 1 ) in a very wild and lonely part of America.( 2 )days they had not even seen a huose,only a few huts made( 3) wood.Then one day they met an old Indian.They found that he knew their language.One of \ 我从三年级起就没学过英语,我现在初二,我这个暑假学英语,我该怎么学 完形填空我是一名初中生,英语就觉得背单词和完形填空好难,特别是里面有很多生单词,请问应该怎样克服这道障碍呢? 六年级下册数学44页第一题怎么写? 七年级英语上典中点Unit11标准测试卷单项选择,完形填空阅读理解答案.感谢!别说要再买一本什么的.也别说什么自己努力.答得好再加50分 再次谢谢了! 有的时候遇到不会做的总会觉得很烦怎么保持平静的心态去做 另外希望把初二初三的重点词组稍微罗列下 六年级上册数学书100页答案 人教版七年级英语完形填空和阅读理解谁能给我一些题啊 one day,Mr.smith 1 out for a walk in the street.he 2 about a maths problem.he 3 to work it out.just then he 4 a blackboard in front of him.he 5 to write the problem with a chalk on it.then the blackboard 6 a little.Mr.smith moved with it.but the blac 人教版六年级下册数学课本100页答案我只要第7题式子.在长12.4,宽7.2的长方形纸中,剪半径是1厘米的圆,能剪几个?结果要是28,求式子. 阅读理解与完形填空练习题 英语NBA is the most famous basketball game in the world.There ① a Chinese players in this game.His name is Yao Ming.He is ② player in this game.In his spare time,Yao ③ cars.On last Christmas, 英语初中阅读理解、完形填空各5则求英语初中七年级上学期starter水平阅读理解、完形填空各5则,要适当有一些难度.如果答案很好将适当加分,注意迅速.另外,其实不是starter的也行,超教材 1:什么是十进制计数法?你能说出哪些计数单位?2:怎样比较两个数的大小?3:分数的基本性质和小数的基本性质有什么关系?4:小数点移动位置,小数大小会发生什么变化?5:因数、倍数、质 关于英语的完形填空和阅读理解题考英语的时候有一毛病,基础可以一点不错,但是完形和阅读我就惨了啊!各位提提做这些阅读题的方法吧! 有没有初中的阅读理解和完形填空啊? 六年级下册数学书第77页答案写详细 完形填空练习书浙教版英语九年级完形填空的练习书有什么比较好的可以推荐的?英语基础还是不错的,但是完形方面不是很好。还有就是选词填空的练习书。推荐好的话我会再给分的;另 我现在初三,做阅读和完形的时候,有好多句子看不懂,选答案时特别纠结,不知道选什么好,最后卷子发下来阅读和完形扣了好多分,我不想在中考的时候英语会拉分啊! 7页第七.求 苏教版的 请推荐一本专门练完形填空和首字母的初中练习书和英语字帖.如果没有此类专门书籍,英语阅读练习类书籍也可.英语字帖不要练连笔的,最好说下出版社,毕竟重名的是有的. 怎样做好初中完型填空和阅读理解 苏教版的六年级数学书上册的第二页第7题(2)小题 高中英语阅读理解和完形填空练习书哪个好 Different people speak different languages,but 1 have a language of their own .Anyone can play.A player’s native(本国的)language is not 2 .A football player from Japan can play with a player from England.One does not3 to understand the langrage 小学数学六年级上册练习与测试12-15页答案 第几页第级题写清楚 哪种高中完形填空的练习书是15个空的?英语完形填空 初中完型填空You cannot see (1) feel it when it is a part of the air.The water in the seas,rivers and lakes is liquid(液体).The water in the air is not a liquid (2) a gas.Clouds are made of water.They may be made of very small drops of water.w 小学数学六年级上册练习与测试111页到114页答案 英语题目(完形填空2道)1.I know it takes a (l ) more time.2.You can start your journey when you (w )to,and you don't (n ) to get to the station. 初中英语完型填空怎么才能做好? 练习与测试小学数学6年级上册第12页第2题怎么解答? ——速求“Happy Fourthe of July!"Garrett loves to hear theae words.The Fourthe of July s his favourite h____.It celebrates when America won freedom from from England.It h____ on the fourthe day of July.Every year,Garrett's family goea to the big 如何作好初中英语的完形填空 一部分也可以。1.男生人数是女生的1.2倍。如果女生有x人,男生和女生一共有()人,男生比女生多()人。2.水果批发市场运来苹果3.5吨,运来的梨比苹果的2倍多0.1吨,运来的梨有()吨。3. 英语完形填空一道~He decided to ( ) a holiday in an excellent hotel in a big town.A.spend B.have 怎样做好初中英语完形填空做好初中英语完形填空,使错误最少,有啥诀窍吗? 小学数学练习与测试6年级上册期中测试答案也就是43、44、45页答案,应用题算式尽量列出来好的给分!!! 急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急 I'm Tina.It's my birthday today.A_______of my friends come to my party.It's a very e_______party.(总归是填好的) 英语四级 阅读理解里的选词填空和完形填空哪个分值多?大谢大谢! 急 求高手做完形填空We just don't treat each other 1. as thatlike thatthe way we used to. I suppose we don't have the time, 2. orbuthowever our lives are too difficult or something. Maybe the city 3. I liveI live inwhere I live in is too big. (首字母已给)Thomas Edison was one of the greatest American i___. 英语(选词填空,阅读理解):1.(also ,as well)Mr green can_______sing the song in chinese.She is the teacher and the singer______.2.她与她的朋友们相处很融洽.She_____ _____ _____ _____ _____her friends.(共有5个空格)3.父母 初三完形填空题There are two kinds of music in the world-one is written down and the other is not.many people earn their living ____music.they write songs for pop stars and music for films and TV plays.they usually write exact institutions on _ 帮我解决2个问题:1个是完形填空,1个是根据首字母提示完成短文,完形填空:Tom is an ___ boy.He’s twelve ____He’s two years ____ than his brother,Jim.Tom is 150 cmand Jim is160 cm.Jim is 50 kilos and Tom is 60 kilos.Tom (初中英语)选词填空.谢! 问一下怎么才能把英语的阅读理解和完形做好(具体的练习方法) 小学英语完形填空(首字母完形填空)Romeo and Juliet is one of Shakespeare's most famous p_____. 2.The biggest distiction b_____ the two versions is that the new one is written by the public. 3.The specific plot is provided by 选词填空. 暑假应当怎么学英语,我是新初三. 初中英语完形填空 1篇The gir got up on the horse.It was a brown__1__ white horse.It was big horse.She__2__on the horse's back.She was taller than her father.She looked__3__ at her father."Daddy,you are shorter than __4__' she said.Her daddy s manage depend burn know art 1.There is going to be a talk on fine ____ this afternoon.2.The secrets between the two girls were _____ except themselves.3.To be _____ is a very important character of a person.4.Winning the competition led her first int 暑假学英语,广州哪里去? 初中英语一道完形填空. 选词适当形式填空1~6题初中英语 2大题的地4小题第四大题的第二小题有的谢谢 学英语有什么好方法(关于做听力、完形填空、阅读理解之类的题)今年6月份就要中考了.在英语方面,初一的时候感觉还没什么,但到了初三后,就感觉像完形填空、阅读理解之类的题有些困 一道初中英语的完型填空On the first day of school, the new teacher had a look at the list. The students’ names were written on it. 1 pleased the teacher was! Guess what she found?After each 2 name was a number, such as 138, 140, 154 a
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn