让软件界面始终美丽如初

上传人:l****6 文档编号:38056350 上传时间:2018-04-26 格式:DOC 页数:3 大小:28KB
返回 下载 相关 举报
让软件界面始终美丽如初_第1页
第1页 / 共3页
让软件界面始终美丽如初_第2页
第2页 / 共3页
让软件界面始终美丽如初_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《让软件界面始终美丽如初》由会员分享,可在线阅读,更多相关《让软件界面始终美丽如初(3页珍藏版)》请在金锄头文库上搜索。

1、1让软件界面始终美丽如初窗口大小可变、对象比例不变摘 要 针对软件界面因窗口大小的调整而出现的各类问题,本文提出了解决这类问题的技术、方法及有关的注意事项,并给出了用 VB 编写的范例程序。关键词 软件界面;同比例缩放;实现技术;VB;对象变量1 引言界面是软件的脸面!软件是否好用、能否被用户所接受,界面起着很重要的作用。然而,在我们所使用的各类软件中,常常出现软件界面因窗口大小的调整而发生变化,以至于出现捉襟见肘、比例失调甚至“献丑”的窘境;也正因如此,许多软件开发者又采用较为保守的设计思想,将软件界面设计成 Fixed,禁止用户调整大小;还有一些软件在改变显示分辨率后出现界面不完整的现象,

2、如 Windows 的显示属性对话框,当显示分辨率从 1024768 调整到 640480 时,无法看到界面底部的三个关键按钮:“确定”、 “取消”和“应用”;除非重新启动计算机!这一切均给用户带来诸多不便,究其根源还在于开发者只重视了软件初始界面的设计,而对软件窗口缩放后所出现的缺陷或估计不足或缺乏对策。能否让软件界面的大小随用户的需求自由改变,而界面中的各个对象随窗口同缩放,做到软件界面始终美丽如初呢?为此,笔者进行了有益的探索,并在 VB 中得以实现。2 实现技术为了保证软件界面始终如一、自适应各种窗口大小,必须做到窗口中的各个对象以及对象的字号、图像等属性随窗口同缩放。为此,在软件启动

3、时首先要用全局数组将原始窗口的大小以及窗口中各个对象的大小、位置及字号等记录下来。然后在窗口的 Resize 事件中进行判断和调整:当窗口宽度改变时,窗口的放大率 K2现窗口宽度原始窗口宽度,为保证窗口的比例不变,窗口的高度应调整到原始窗口高度的 K 倍;反之,当窗口高度改变时,窗口的放大率 K现窗口高度原始窗口高度,同样需将窗口的宽度调整到原始窗口宽度的 K 倍;如果窗口的宽高同时改变,则视为窗口的宽度改变即可。最后,为保证窗口中的各个对象同比例缩放,对象的大小(Width、Height 属性)、位置(Left、Right 属性)及字号(FontSize 属性)也应在其原始值的基础上乘以 K

4、。为了实现上述功能,用一个二维的全局数组记录每一个对象的Left、Top、Width、Height 和 FontSize 属性,然后以对象变量和二维数组的行索引为参数定义两个通用过程 GetData 和 SetData,前者用于获取对象的原始属性值,后者用于设置对象的新属性值。此外,还要注意以下几个问题:(1)软件启动时,如果窗口的宽度大于屏幕的宽度或窗口的高度大于屏幕的高度时,应使其与屏幕同宽或同高,以避免出现类似于 Windows 的显示属性对话框在分辨率变化时所出现的尴尬局面。(2)一般应用软件的窗口在最大化时会以屏幕的尺寸为依据进行双向调整,这样就会破坏原有窗口的比例。如果想让窗口最大

5、化但又不想破坏窗口的比例,那么在最大化按钮被单击时,首先使窗口的左上角与屏幕的左上角重合,然后使窗口的一边与屏幕同宽或同高,另一边则按比例放大;究竟要将哪一边调整到屏幕的尺寸要看窗口的宽高比值:若窗口偏宽(窗口宽高比屏幕宽高比),那么应以屏幕宽度为准作为窗口的宽度,否则应以屏幕高度为准作为窗口的高度;这样可以保证比例不变,而窗口尽可能最大化。(3)当窗口的高度被调整到非常小,甚至只剩标题栏的高度时,应以窗口的最小宽3度(有最大化等按钮时,其值约为 1700 Twip)为准调整窗口的高度。(4)对于界面中所显示的图像,最好用图像控件 Image 作为对象,因为此类控件一般都有拉伸属性 Stret

6、ch,只要将其设置成 True 后显示在其中的图像就会随图像框的伸缩而自动拉伸,始终呈现给用户的是一幅完整的图像。 3 范例程序3.1 界面设计启动 VB 后在窗体中添加四个控件:一个图像框控件 Img(先将拉伸属性 Stretch设置成 True,然后用 Picture 属性添加一幅图片)、一个标签控件 Lab(将 AutoSize属性设置成 True,并设置好标题)、一个文本框控件 Txt(将 MultiLine 属性设置成True,并设置好文本)和一个按钮控件 Cmd(将标题改为“界面增幅 10%”,单击此按钮时窗口及各个对象放大 10%)。软件界面如图 1 所示。图 1 软件界面对话框

7、 3.2 编写代码Dim LastWidth% 窗体上一次的宽度Dim a%(1 To 5,1 To 5) 对象的原始数据Dim k As Single 窗口的放大率 Private Sub GetData(O As Object,n As Integer)On Error Resume Nexta(n,1)=O.Lefta(n,2)=O.Topa(n,3)=O.Widtha(n,4)=O.Heighta(n,5)=O.FontSizeIf n=1 Then a(1,4)=O.ScaleHeight: LastWidth=a(1,4) End Sub Private Sub SetData(O

8、 As Object,n As Integer)On Error Resume NextO.Left=a(n,1)*kO.Top=a(n,2)*kO.Width=a(n,3)*k4O.Height=a(n,4)*kO.FontSize=a(n,5)*k End Sub Private Sub Form_Load()GetData Frm,1GetData Img,2GetData Lab,3GetData Txt,4GetData Cmd,5If Me.WidthScreen.Width Or Me.HeightScreen.Height Then Me.WindowState=2 End S

9、ub Private Sub Form_Resize() If Me.WindowState=1 Then Exit Sub 最小化 If Me.WindowState=2 Then 最大化Me.WindowState=0Me.Move 0,0If Screen.Width/Screen.Height = a(1,3)/a(1,4) ThenMe.Height=Screen.HeightElseMe.Width=Screen.WidthEnd If End IfIf LastWidth Me.Width Then 宽度变化k=Me.Width/a(1,3)Me.Height=a(1,4)*k

10、+ 395Else 高度变化k=Me.ScaleHeight/a(1,4)Me.Width=a(1,3)*k End If SetData Img,2 SetData Lab,3 SetData Txt,4 SetData Cmd,5 If Me.Height = a(1,4)/a(1,3)*1680 ThenMe.Height=a(1,4)/a(1,3)*1680 + 395End If 保证最小窗口也成比例LastWidth=Me.Width End Sub Private Sub Cmd_Click()Me.Width=Me.Width*1.15End Sub 3.3 运行情况程序运行后,不管是拉伸边框、单击放大 10%按钮,还是单击最大化按钮,窗口中的四个对象同比例进行缩放,屏幕上始终看到的是一个如图所示的完整的比例不变的界面。4 结束语本文虽然给出的范例程序是基于 VB 编写的,但文中所谈的技术和方法同样适用于 VC+、Delphi、C+Builder 等面向对象的编程语言。参考文献1 张立科Visual Basic 6.0 程序设计参考手册M北京:人民邮电出版社,2003年2 美 Steven HolznerVisual Basic 技术内幕M北京:机械工业出版社,1999 年

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号