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

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

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

六大开源监测工具 你用过哪个? TUP第28期:Intel 微软 Yahoo的大数据实践 惊变14天,从“小白”到上架App Store商店 “今日头条”CEO张一鸣:我是爱冒险的技术宅 OpenStack基金会COO Mark Collier:2014年将超越AWS Evernote更新Android SDK:新增商务服务并拆分“印象笔记” 主流编译器对C++11的支持现状比较 GCC 4.8发布,提升对C++11的支持 英国政府下令首选开源软件 为何美国IaaS收购被引爆?基于IaaS的四个误解和四个猜想 Kinect SDK v1.7迎来重大更新 如何激励同事编写单元测试? 谷歌GCE vs. 亚马逊EC2:快源于谷歌本有的底蕴 不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 欲购pc,求助!!(进者有分啊) 高分求教!! 建立表得问题 求javascript得到vbs产生的数组 阿菜求教!一个已经建成的dbf数据库怎么修改其字段长度呢? 请问怎么样才能开发手机游戏? 那裡有用java寫的小游戲的原馬呀﹗﹗ 请问怎才可以让图象中有网格啊? 高手指教 配机!!求助!!(进者有分啊) 这样简单的程序怎么通不过! session值修改还是未解决。 一个问题? flashget怎么用? 怎么相应动态创建的控件的事件 关于多媒体播放器的问题 快结婚了,可男朋友依旧把前女友的照片当成宝贝,我该怎么办? 建议组织一个水园老五大联盟。有支持的请up ! jspsmartupload上传100M以上的文件报错怎么办? 高分求助! 在那里下载jsp服务器的软件? 大家帮个忙,急寻南京兼职,饿死了 在unix下如何编译自己写好的c语言程序? 有个问题请教 ? 保存电脑技巧的问题。 在linux下怎么使用SAMBA使用windows下面的东西? 菜鸟级问题 我要在com+中间层返回sqlserver服务器的时间,怎么通过sql语句实现? 女友是空姐没有安全感怎么办 有几个概念不清楚, 劳驾哪位给解释一下 在unix下如何编译自己写好的c语言程序? Listbox 拖放的问题!解决就给100分! orical 我的测试连接失败! 小问题,别笑! 新手对指针的理解,大家指点指点,多谢!! 重载问题??? 高分求助! 哪里有截取vpn数据包的代码学习啊??? 怎样写贴子的标题才能吸引大家的注意?举例者一律给分! 关于API 为什么我的资源管理器反应很慢? 南京远志科技公司怎么样,马上要去面试了,请大家谈谈情况 请问这是什么意思 100分马上给 升四个▲了,散分!!!顺便问问那些两个星星的,你们升到两个星星以后的心情是什么样的?会不会有些失落感? 谁知道mediaplay控件 有没有直接到 一段视频文件结尾的方法 用quickstart出现地问题 小弟没写过事务,请教下面这个功能怎么写 万分着急! 在线等候!求和问题 怎么在sql server 的存储过程中调用它的异常处理呢? 劳累了一天了,希望在水园的朋友们今晚愉快:) 母乳喂养提高婴儿免疫力是属于自然免疫、人工免疫、还是特异性免疫?如题要具体原因 天然免疫和人工免疫都是特异性免疫吗 我司有一台高低温箱是-60度的,想知道这种试验箱温度还能做得更低吗? 为什么电容器两端电压升高 特异性免疫和人工免疫有什么区别啊 哪些是平移现象?荡秋千是平移现象吗?写字是平移现象吗? 已知AB=OB,CO=CD,E,F,M分别为OA,OD,BC的中点,求证ME=MF如题图形 请问特异性免疫与人工免疫的差别是什么? 高低温试验箱做试验的时候温度怎么控制? 汽车原灯泡55w可以换100w吗 35kv并联电容器 一个质量为m的带电小球,在竖直方向的匀强电场中水平抛出,不计空气阻力,测得一个小球的加速度为g/3,则在小球下落h高度的过程中.下列不正确的是()A,小球的重力势能减少mgh/3B,小球的动能 已知下列各微粒的结构示意图A+17 )2)8)7 B+12 )2)8 C+18)2)8)8 D+11 )2)8)1 E+16)2)8)8F+17)2)8)8判断:属于原子的是,属于阴离子的是,属于阳离子的是,达到稳定结构的是 并联电容器是如何提高系统电压的. 有一悬线悬挂质量为m电量为q的带电小球,放于水平向右的匀强电场中,设小球静止时西线与竖直方向的夹角为西塔,求;1该小球所带电的电荷电性 2小球受到的拉力,3 球该匀强电场的场强E图你们 55w灯泡可以直接换100w的吗 电力并联电容器为什么要做冲击电压实验,它的标准是?是怎样做的 我想问矿泉水对人有什么好处? 注射疫苗是什么免疫?特异性免疫?还是计划免疫? 氢原子处于量子数为n的激发态,可辐射出多少条数的光谱线和非可见光谱线 如题 “彧”这个字拼音是什么?彧这个字怎样输入? 氢原子电子在各能及的能量为什么只与主量子数有关如3s=3p=3d小于4s 首饰的原料是什么?A、云母B、钻矿C、石英 计划免疫与特异性免疫的区别是什么 农村瓦房的人字形屋顶为什么是倾斜的? 男人硬度问题听同事说她LG刚刚三十六,就经常硬度不够.一开始还行,两分钟后开始软,虽还在里面但是哪种被进攻的感觉一点也不强烈了.男人不到四十真的开始“微软”? 这个字的拼音是什么“彧”? 为什么屋顶倾斜角度越大,雨水流下的速度越慢 男,硬度男,23岁,有4,5年的手淫历史,现在那勃起长度有14厘米,但是总是不硬,勃起几分钟之后再无射精情况下就软了,然后经过刺激之后又可以勃起.请问我这是怎么回事,是不是某种病态的开始, 计划免疫和特异性免疫的区别 晶体或固体物质就没有离子吗 三相同步电动机和三相异步电动机有什么区别?用简单易懂的话解释.能控制转速的是哪种? 电容器电压什么时候会变保持电源电压不变,在电路中串联一个电阻,将电容器板间距离增大时,两极板的电压为什么不变?电压不变的话什么时候会变? 正确的是( )A非金属都是绝缘体B有一定熔点的固体都是晶体C含有氧元素的化合物都是氧化物D含有碳元素的化 酪蛋白与溴甲酚绿指示剂反应的实验目的是什么 竹子也能做衣服吗?竹子这么硬它是怎么变成布的?原始的竹子布是绿色还是白色?是有弹性还是硬的?变成衣服的竹子是什么样的?有什么特点?它怕水缩水吗?如果你的答案超级精彩将会在中央电 如图所示,一束带电粒子,电量的大小为1.5×10^-19C,以速度v=3.2×10^6m/s沿着垂直于磁场方向(接下)同时又垂直于磁场边界的方向射入匀强磁场中;匀强磁场的磁感应强度为B=0.17T,宽为d=10cm传出磁 OP平分∠AOB,PC⊥OA于点C,PD⊥OB于点D,CD与OP交于点Q求证:CQ=DQ 特异性免疫有哪几种 “是以不去”的以“是”和“以”是什么意思 OP平分∠AOB,过点P作OP的垂线分别交OA、OB于点C、D 请问:PC=PD吗?为什么?能不能利用角平分线的性质求证呢? 算着算着 饭算不出来 还是辅助角公式错误? 带电粒子速度方向与磁场方向水平时在不计重力的情况下,做匀速直线运动吗?原因是不计重力的理想状态下,还是其他什么原因? 请问,对角线元素均为0的对称矩阵,它是半正定的吗?是否是这样的呢:半正定矩阵的对角线元素是非负的,而且零矩阵是一个特殊矩阵。请问对角线元素为0一定能推出是半正定吗? 为什么我在用辅助角公式时会这样,请看一下我错哪了? 微胶囊化红磷阻燃剂是什么? 电子元器件一般含有阻燃剂吗 为什么正常雨水酸性变强不是因为溶于水二氧化碳变多? 辅助角公式是b/a还是a/b? 红磷与红磷阻燃剂是同一种物质吗?又有什么区别呢? 如图,ab、cd相交于点O,且bd=bo,ca=co,e、f、m分别是od、oa、bc的中点,求证ME=MF 顶楼为何下雨不漏雨,天晴时漏雨,屋顶该怎们修 我将自做的电磁铁装置接上电池,也能吸起小铁屑.电池不是发出稳定的电流吗?为什么还能产生磁场? 特异性免疫包括人工免疫吗 (脑筋急转弯) 邻居家的屋顶为什么有时漏雨,有时不漏? across和cross有啥区别? 什么是天然免疫和特异性免疫.请举例说明二者之间并无截然界限重点是 请举例说明二者之间并无截然界限!不用解释什么是天然免疫和特异性免疫 邻居老李家的屋顶为什么有时漏雨,有时不漏雨? 低温试验箱温度设置说明我想老化一电流传感器,但不知道低温试验箱的温度如何设置,所以想找一份低温试验箱的温度设置说明,我们这个是可编程的控制器,是不是凡具有可编程的控制器的试 中国周边外交换挡升级外国人如何申请中国绿卡伦敦金属交易所基本金属期货价格24日南宁官方回应“警察枪击抗拆村民” 称北京研究6家高尔夫球场退出水源区 名大妈跳广场舞扰民被泼粪 称嫌吵装隔音郑州多处城中村拆后复建缓慢 村民被迫落实大气防治行动计划 京津冀区域治霾揭秘张曙光“学术”路:读博士不愿写论监控全世界的美国政府公信力受质疑哈士奇模仿婴儿爬行萌翻网友【组图】奥巴马医改核心举措漏洞频出接受国会质美田纳西州海军基地2名士兵遭枪击受伤肯尼迪家族亲戚杀人案将重审 72年还女子看上弟弟嫁给哥哥 遭家暴虐待起诉国考报名结束 最热职位“七千挑一”胡万林涉非法行医致死案:学员各交万元永康两家企业排污被当地镇政府责令停产中国军工产业向全球进军 开始与西方竞美媒称土购中国导弹或是把特洛伊木马塞德国就默克尔手机或被美监听一事召见美辽视春晚 贾乃亮一家奉上“家和万事兴新增中小学学位2万个 优质的依旧难求世界海拔最高引力波观测站在西藏启动建保持定力,步步深入推进管党治党民意调查显示 逾九成群众满意 反腐败北京卫视春晚 李晨范冰冰演绎“梦想之凝心聚力 推进全面从严治党用好监督执纪“四种形态”让失责必问成为常态坚持标本兼治 扎紧制度笼子谈体会 话担当“最终要落脚在看齐上”以案为鉴严明换届纪律“回马枪”出其不意 显神威持续震慑重任系于身,关键看行动“微腐败”也可能成为“大祸害”林心如生啦,是个双酒窝女娃越秀区6所中小学合并《玩命直播》首映, 网红观影大联欢“水墨西行”中国画域外写生系列展陈赫与网络主播玩转广州塔
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘