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

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

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

巧用Visual Basic的TIMER控件 VB取得控件绝对Top值 VB如何解决VB中的Grid 控件的打印问题 VB如果自定义 MsgBox 的按钮,标题等 VB如何创建数据绑定控件。 VB如何解决VB中的Grid控件的打印问题 VB如何强制文件对话框再次读取正确的磁盘? VB如何取得RichTextBox控件中光标所在行的值? VB如何设定 MsgBox 在若干时间之后若无回应則自动关闭? VB如何使用VB控件Commom Dialog VB如何用VB6写COM组件(二) VB如何用VB6写COM组件(一) VB如何在VB中使用Delphi的控件 VB如何在运行时动态增加控件 显示和隐藏鼠标-VB资料 VB用ActiveX Control Pad VB用API函数改进ListView 控件的显示效果 用VB6.0中文版进行DHTML程序开发 用VB编写标准CGI程序 用VB编写留言板 用VB播放FLASH动画 用VB开发进程管理软件 VB用WinSock设计Chat程序 运用MSChart,生成统计图形-VB资料 向文本框等等控件的系统右键菜单里追加自己定义的菜单-VB资料 在VB中用定时控件实现长定时操作 在Visual Basic中,在GotFocus事件中快速选定文本 在程序中注册和注销 OCX 控件 -VB资料 在运行时维护DBGRID的栏位宽度-VB资料 VB怎样使用VB开发基于Sybase的C/S软件 VB怎样在运行时动态生成多个相同的控件 (dos6.22不动一会儿硬盘就停止响应了)如何在dos下设置硬盘的电源管理。命令是什么?谢谢 《TCP-IP详解卷2:实现》的源代码在哪里下载? 如何接受这个消息呢? Not operational? 谁来推荐本关于NT或2000 服务编程方面的书籍下载地址? 请问如何编写组播路由软件 如何实现 Delphi 带参数运行? 寻找DDbgridEh控件for Delphi6,高分! 一个VFP的打印问题! 关于基于单文档应用程序的问题 怎样在Exchange Server上部署应用,拦截所有通过outlook发给该Exchange的邮件,提供一个思路也行! wolfAone (黑色的狼(WOLF))你给我进来,有消息了! 请问JAVA如何读写注册表 经典图书??? 请问一个关于窗体置前的问题 HELP!关于STRUCT的问题! 请问,怎样知道光驱里面的光盘是不是已被更换? 在Delphi如何进行包的调用,本人将无比感谢 关于exchange的几个问题? sdk中怎样在客户区中播放视频文件(从通用对话框中) 打印问题 大家帮帮忙看看代码,指点我一下。 请问如何让浏览器中的COM组件得到当前浏览器的IDsipach接口(或IWebBrowser2接口)? 控件打印的问题 有关request.getParameter();的奇怪问题! 常见代码,有些地方我不明白帮我详细注解一下以下代码 征求解决方案 裁剪linux后,不能起动 请教MayFlower,asmx文件变成下载的问题 高手难题:SYBASE触发器中如何获取text字段的内容 珠海程序员薪金调查!(决定了我的前途)谢谢! 对利用Telnet进行自动化处理提点意见 强制类型问题 这都啥年代了?CSDN还在卖VS.net beta2!!! 请问在一个基于对话框的应用程序中,怎样实现打印功能?同时要求不弹出打印对话框,而且将纸张大小设为A4,打印方向设为横向? 小问题 SQL Server 7.0有for Alpha的吗? JIT究竟是什么东西?能否详细叙述,谢谢!另外,由于Java的跨平台技术,编译后的Java程序速度相对较慢,那么速度究竟慢到什么程度?通过什么能提 请教各位高手,关于CDONTS.Newmail对象的一些疑问? 我在新建类时为什么找不到CTOOLBAR基类,怎么新建基于CTOOLBAR的类? 用goto语句如何调用另外一个过程中的标签?急!急!急! 我仍然不能打开第二个光驱? 500分求一份关于工资管理系统的分析报告 如何得知一个字符是中文还是英文? help:画一个点的CDC member function is ....? linux下的编译机制与VC的编译机制是不是相差很多,好像LINUX下的慢很多,WHY? 如何导入一个数据文件 RMACreateRMBuildEngine调用失败---real VFP6。0中如何做图,我怎么找不到gengraph.app??? datawindow怎么做打印预览? 一个有关FORMVIEW的问题???? pe立体袋的价格的计算公式 做一个铸件的时候 为了保证质量 我们一般希望它内部是什么晶体呢?等轴晶还是柱状晶好些呢? 世界如此美好 值得为之奋斗上半句是什么 透镜成像 在一倍焦距内、一倍2倍内、在2倍外 都是什么样的像 晶体实物的折光与晶轴有关系没 过点(5,2)且在x轴上 的截距是在y轴上的截距的2倍的直线方程 PE塑料袋的计算公式(最好分别说一下平口袋的和立体袋的)谢谢! 设有一金属球壳,内含一同心的金属球,金属球借助一穿过外球壳小孔的导线接地.如果金属球壳带正电,则内球的带电状况为( ).  A.不带电   B.带正电   C.带负电   D.无法确定 物理 凸透镜成像 第三题 化肥中的氮磷钾对植物分别有什么作用啊?力求详细! 金属球壳 接地不是说金属球壳接地后就不带电了么,为什么有些题目还是带电呢?那到底是带电还是不带电呢,为什么?还有书说是球壳影响大地带上电,可是大地带的电不是可以忽略不计么?静电 直线过点P(5,6),它在X轴上的截距是在Y轴上的截距2倍,求此直线的方程? 电力线是什么是电场线么? 如何计算一个食品包装袋得成本?我有这方面得人脉、想走这条路,希望谁能告诉我怎样计算,拜托. 一道凸透镜成像物理题当物距镜20cm时,在透镜另一侧光屏上找到一个放大的像,求该透镜的焦距【不要范围】 电力线是否就是电场线? 一直线经过点(-3,4)且在两坐标轴上的截距之和为12,求直线的方程 直流电源滤波电路中电解电容怎么选择 电力线路上有谁知道这个叫什么? 过点P(1,4)的直线在两个坐标轴上的截距都为正,且截距之和最小,则直线的方程是____ 过点(5,2),且在x轴上的截距是在y轴上的截距的2倍的直线方程式()这是一道选择题.A:2x+y-12=0B:2x+y-12=0或2x-5y=0C:x+2y-9=0或2x-5y=0D:x+2y-9=0或2x+5y=0要求:不能只给选项. 谁知道pvc片材都有哪些 和规格 过点A(4,1)且在两坐标轴上的截距相等的直线的方程是? 有一道物理题,有关于凸透镜成像规律,谁会?物体如果在凸透镜的焦点处,不成像,因为此处的光经过凸透镜折射后成为( )光,所以既不能汇聚成( ),反向延长线也不会相交成( ). 谁能提供PVC片材报价是做吸塑用的原材料最新报价 求经过点A(-3,4),且在两个坐标轴上的截距之和等于12的直线的方程. 求经过点A(-5,2),且在x轴上的截距等于在y轴上的截距的2倍的直线方程请问这道题,当截距为零时,要不要考虑? 解理面是面指数高的晶面还是面指数低的晶面?为什么? 一直线过点(-3,4),并且在两坐标轴上截距之和为12,求这条直线方程 麻烦给出分析 关于直线方程的截距式x/a+y/b=1a是到x轴的距离吗?b是到y轴的距离吗?右边必须等于1吗? 晶体中在写晶向指数或晶面指数时晶体中在写晶向指数或晶面面指数时,往往并不指明坐标轴的选取,这时如何确定是什么方向啊?书籍或文献中,都没有指明坐标轴,就直接给出一个方向,这时我 如图,平行板电容器的两个极板与水平地面成一角度关于此题 粒子是否有可能沿直线从右向左运动? 急求空间直线的截距式方程不是平面直线的,是空间xyz轴都有的 怎样判断晶面指数的大小 水平放置的平行板电容器的两极板MN接上直流电源.上极板M的中央有一小孔A,在…… 如何将直线的一般式方程化作截距式方程? 在晶体结构中,具有相同指数的晶向和晶面必定相互垂直吗?还是只是在立方晶系中,才满足这个关系.希望可以阐述的详细些,或者举出反例 过点p(6,-2)且在x轴上的截距比在y轴上的截距大1的直线的方程 直线的两点式和截距式方程△ABC的三个顶点坐标分别为A(2,4),B(-2,0),C(6,-2),一直线L平行于BC分别交AB,AC于P,Q,若△APQ与△ABC面积之比为1:4,则直线PQ的方程为 物理光学凸透镜成像题 1、过点p(1,2)且在x轴,y轴上的截距相等的直线方程是2、三条直线x+y=2,x-y=0,x+ay=3能构成三角形,则a不等于3、已知sin(a+π/4)+sin(a-π/4)=(根号2)/3,(1)求sina得值,(2)求{sin(a-π/4)}/(1-cos2a 金刚石是非晶体还是晶体? 包装费用公式怎么计算我想知道包装费用有没有一个比较全面的计算公式,比方包装包括的直接包材费用,人力投入,机械投入,水电,煤气,以及间接的隐形的费用.好烦琐的 有没有一个比较好的 求在x轴,y轴上的截距分别是-5,6的直线方程 金刚石是晶体而____不是晶体,是因为_______? 当知道最小包装数量,实际需求数量,如何按照整包装下单,在excel表中怎么用公式表达?当最小包装数量为1000,而实际需求数量为1996,但下单只能按包装2000的数量购买,这个用什么公式啊?如何使用 在x轴,y轴上的截距分别是4,-3,求直线方程,要详细过程! 关于物理凸透镜成像规律的问题为什么当物距等于焦距时会不成像?为什么小于焦点是会成放大的虚像?最好有图解释. 植物缺乏氮会有什么转变? 袋子里2白2黑,求摸到白概率,给我用组合公式 凸透镜成像在光学中,把薄透镜的中心称为____________,通过该点的光学传播方向____________,而通过它的其他部位的光线都会发生____________现象.透镜的焦点常用字母____________表示,焦点跟光心的距 PE袋报价的公式是怎么样的 晶体晶面定义?比如{110}晶面 物理凸透镜成像的题把高2厘米的发光棒立于焦距5厘米的凸透镜前,在凸透镜后的光屏上成了4厘米高的像,则物体离凸透镜的距离可能是多少 求PE立体袋计算公式? 一轴晶体是低级晶族吗 物理题 关于凸透镜成像物体在距凸透镜12cm时,在另一侧光屏上成的是放大倒立的实像,那么物体在距凸透镜8cm时成的像A 一定是放大倒立的实像 B 可能是放大正立的虚像C 可能是等大倒立的实 物理光学问题——凸透镜成像本人在总复习时发现这部分搞忘了!THANKS 请问什么是晶体晶面,负晶,枝晶,准晶及电晶体? 物理题 关于凸透镜成像问题小明用眼睛观察蜡烛在凸透镜中所成的像,蜡烛和凸透镜不动,较远时,小明观察凸透镜中呈现清晰的像,较近时,则看不见像,请解释其中的原因
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘