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

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

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

MongoDB的得与失 开箱即用!Android四款系统架构工具 谁说Kinect只是玩物?微软研究院使用它实现口语手语实时翻译 新浪微博推出粉丝服务平台 引发两微PK大战 MDCC2013移动开发者大会最新日程发布 门票优惠最后1天 英特尔CEO:EUV光刻技术或助力芯片突破摩尔定律 从微软大数据日看到的,银行、交通、医疗实践之路 IDC:iPad市场份额遭Android平板蚕食 滑至29.6% [TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案 用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 Ion Stoica和他的数据故事(上) 开发者必备:测试网站速度的五个免费在线工具 谷歌员工曝光在谷歌工作那些最糟糕的事情 MDCC 2013全民移动 玩转智能硬件展 如何降低白噪声对网站用户体验的影响? 谁才是真正的资深开发者? 东软董事长刘积仁阐述三大战略 构建以知识资产驱动的商业模式 一切皆为 JavaScript 黑莓:弃私有化任命华人为临时CEO 卖给联想的节奏? 谁说WP仍然不行?意大利WP份额已超iOS MDCC之移动娱乐游戏峰会:百家手游齐逐金玩奖 专访Mozilla宫力:基于Web是Firefox OS最大的资本 在线等待----100分,急!!! 光标定位问题 asp mail question 一些比较菜的问题 实用问题,在触发器中如何退出? 怎样来通过我的程序来控制另一个程序的下拉菜单 VS 2003哪里有下?VB的GRIDCTRL如何调整各列的宽度? 请问如何把datagrid中的数据到出到Excel中做报表 DLLHOST.EXE是什么东西?它占用了CPU的99%,服务器慢如蜗牛,ASP文件不能正常运行,救命啊!!!!!! 急用!谁能提供五子棋的算法和设计? 谁有无限制的activethread控件,通知一下, 很急! 谁能提供五子棋的算法和设计?急用! 请教一个WebLogic问题,请高手帮忙! 怎么知道DLL里函数以及它的参数 有关IE主页被恶意修改的问题请教。。__急! 急用!谁能提供五子棋的算法和设计? set mail=server.createobject("cdonts.newmail") 错误,高手指点一下!!! 谁能提供五子棋的算法和设计?急用! 如何解决??? UNIX中文录入的问题 菜鸟求一个语句 500分给前辈 大家都来看看这些女人(三分长相,七分打扮) 兄弟们,帮忙提供个参数~送100分了,承蒙关照了 调查:你现在用哪种开发工具,感觉如何? 防火墙经常出现类似记录信息 请问.pdg格式的电子图书如何浏览 新版net2003web Service 奇怪的FileNotFoundException错误 求救:支持汉字的OCR控件。给个制作思路也成。 在网络中运行in.readline 的时候会不会等待有流传来才读取的??很矛盾 ODBC的作用?=我的机器上没安任何数据库管理系统(如:access,foxpro等)但我可以用asp访问某个.mdb文件,是吗? 怎样用程序实现把FTP站点映射为一个驱动器? 虚拟光驱是怎样做的? //非常奇特的系统启动现象,进来看看// 有没有这样的涂鸦板的代码 //非常奇特的系统启动现象,进来看看// //非常奇特的系统启动现象,进来看看// //非常奇特的系统启动现象,进来看看// 请问各位大虾,JSP服务器使用j2ee的多不多??? 为何crystal report4.6打印出来的纸张长度大于预览时的长度 怎样实现? 听在迈普(maipu)的同学说,在这学期的毕业实习里,很多新人被开掉了,为自己的想象力惭愧 在datagrid模板中绑定的label控件怎么解决显示文本宽度的固定 有点困惑! add() mssql中如何将字段类型设为“布尔”类型? 麻烦高手给我说VC++和标准C中不一致的地方 我的明天何去何从! 如何在SQL中存储图片的路径 导入一幅图片到Form中,怎么才能实现图片的拖拽、旋转和放大缩小? 一个简单问题,会着不难!敬请帮忙! think you are very crzy! who is pig? 2.3题, 好久没做忘了( 一元二次方)(2x-1)的平方=(3-X)的平方 who is the author of three little pig 如果把数字7写到某一个一位数的后边这个数就增加了43一位数是多少怎么解答 含ow的单词 itouch里的 who is pig怎么玩 在矩形ABCD中,AD=5,AB=3.点O为BC边上的中点,点E、F都是直线(!)AD、DC上的动点,且保持∠EOF=90°.若四边形EODF的面积为该矩形的一半,则AE= . 与瞧不起意思相近的两个字的词语不能是鄙视和歧视 热和雨能组成什么成语 2 4 7后面的数字是什么? 数学选修2—2麻烦解释下 向来很久 我不会英语,别人给我发短信好像是骂人的,谁能帮我译下,The man who is reading the message is a pig 如题 函数f(x)=x2+2x+5在[t,t+1]上的最小值为g(t),求g(t)的表达式.函数f(x)=x 2 +2x+5 在[t,t+1]上的最小值为g(t),求g(t)的表达式 . 1.用五点法作函数y=3sin(2x+π/3)的简图,并求使函数取得最大值的自变量x的集合.2.在ΔABC中,角A、B、C所对的边分别为a,b,c,且cosA=1/3(Ⅰ)求sin^2 B/2+C./2+cos2A的最大值;(Ⅱ)若a=tan60°,求bc的最大值; 同样的电阻串并联,阻值会发生变化吗?两图阻值一样吗? 描写路途辛苦的成语 《令人高兴的变化》为题写一篇作文 销魂黯然.销魂是红色的,黯然是灰色的是什么成语 ppt中点一次出来第一个标题,再点一次出来解释此标题的内容,再点一次隐去以上解释内容并出现下个标题.以上过程在同一张幻灯片中完成,这是怎么做到的,研究了老半天没研究明白, 高一上学期期末数学考试题目,急求答案,要过程.求经过2x+y+8=0和x+y+3=0的交点,且与直线2x+y-10=0垂直的直线方程.过程答案,谢. 如何可以快速打开白炽灯灯头?如何打开灯头让玻璃与灯头良好分离 我由此想到,老师们在平凡的教学岗位上付出的一切不会是徒劳的.这句话的意思 设集合A={x|x²+4x=0},B={x|x²+2(a+1)x+a²-1=0},分别根据下列条件研究实数a的取值情况:(1)若A并B=B:(2)A交B=B 汗毛读han四声,还是han二声 这题怎么算?然后答案是什么 如何计算电阻R1、R2、R3的阻值?如下图所示. 怎样去除白炽灯灯头就是剩下白炽灯主体,作艺术品那种 怎么算?答案是什么 以“令人高兴的变化”为题的一篇作文 快 请问这是什么鸟?喂什么?能养活吗? 内洞一团漆黑,什么也看不见是什么成语 这个图有几个角,几个直角? 请问图中怎样计算每个电阻的阻值,现在只能测量A.B.C端,有计算公式吗?再比如一根电阻烧断,怎么查?谢 结拜 程序 磕头 磕几个,谁有详细的程序!烧香 3根香?磕头 磕几个?还是3跪9拜?盟誓喝酒规矩是这样么 请问还有详细点的没!要割手指啊是洒酒 还是喝酒? 这道题怎么算?、我等着要答案.谢谢 什么日什么雨的成语 摩托车三小时行135千米,汽车每小时行65千米.摩托车每小时比汽车慢多少千米? 图上有几个角,几个直角! The pig is fatk 中文是什么意思 设f(x)=x^2,0≤x 中共在50-70年代社会主义建设中的失败教训和原因?请尽量具体一点! who is the 读[əu]含ow的英文单词有哪些?越多越好! I'm often ill.M_______I hardly ever exercise空格上填以M开头的单词 通过凹透镜的光不一定是发散光、、这句话对吗 与low的ow发音相同(字母相同)的英文单词 His father hardly ever exercise.变成反义疑问句、 雨和传能组成什么浪漫的成语 匆匆片段的阅读求答案 有the big stick这项政策吗 数学,我要过程 found,mike,notebook,english,in,an,school,library,the,this,afternoon,.连词成句. hardly ever的同义词是什么? 像前俯后仰一样写人的动作的成语 三个 什么狗好 四个角都是直角的图形是平面图形,理由 电阻色环的阻值,各位请帮忙看看图中的电阻是多大的?忘了发图片了,红 第十一届夏威夷“中国风情节”开幕浙江部分行政区划调整 绍兴县上虞市撤宁波住博会市民看房重开发商 遗憾大牌通讯:历史遗迹记录昔日辉煌――泰国旧英国铜像常被挂内裤乳罩 政府被迫将其英国铜像常被挂内裤乳罩 政府被迫将其通讯:历史遗迹记录昔日辉煌――泰国旧亲善合作 睦邻友好——国内外人士积极马来西亚举办“小状元汉语经典诵读大赛巴基斯坦塔利班头目死于美无人机空袭 英国一医院医疗过失误诊流产 恐致死逾第五届中国木质玩具文化节在浙江云和开为阻法院强制执行 浙江金华一老人扬言浙江金华一智障儿命悬半空 特勤消防空宁波银行发力托管业务 首只公募基金开浙江云和经贸合作洽谈签约引资50多亿把美式“监听帝国”关入“笼子”杭城周末马拉松大派对 关键词:超越、美国无人机再次出手清除巴塔首领 和谈巴基斯坦塔利班头目死于美无人机空袭 中朝俄荣膺第14届中国吴桥国际杂技艺社会文化简讯:丝绸之路青年领袖论坛聚看着看着就呆了河南焦作成功挑战吉尼斯世界纪录 全球德国被曝花钱买2006世界杯主办权 6月上海豪宅成交排行榜新鲜出炉,为什这酸爽依旧如此迷人三个交易日内,市场或一扫颓势!这是什么节奏呢?师傅,您找我有事吗?一文看懂全球历次股灾骚年,你这是忍不住了吗?晓帆:股市暴跌已经开始威胁到国家经济全国年终奖排名,屌丝看了整个人都不好艺术史上的今天 | 7月3日宋美龄,106岁的她究竟有多会生活?手机大促不上京东难成盛宴还是这标语有用啊城投债不可以再扩大中美精英生活方式大不同(耶鲁大学博士调查说中国消费者不再迷恋外资品牌了二喵,你为何这么做?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘