欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > 让软件界面始终美丽如初

让软件界面始终美丽如初

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


——窗口大小可变、对象比例不变 摘 要 针对软件界面因窗口大小的调整而出现的各类问题,本文提出了解决这类问题的技术、方法及有关的注意事项,并给出了用vb编写的范例程序。 关键词 软件界面;同比例缩放;实现技术;vb;对象变量

1 引言

界面是软件的脸面!软件是否好用、能否被用户所接受,界面起着很重要的作用。然而,在我们所使用的各类软件中,常常出现软件界面因窗口大小的调整而发生变化,以至于出现捉襟见肘、比例失调甚至“献丑”的窘境;也正因如此,许多软件开发者又采用较为保守的设计思想,将软件界面设计成fixed,禁止用户调整大小;还有一些软件在改变显示分辨率后出现界面不完整的现象,如windows的显示属性对话框,当显示分辨率从1024×768调整到640×480时,无法看到界面底部的三个关键按钮:“确定”、“取消”和“应用”;除非重新启动计算机!这一切均给用户带来诸多不便,究其根源还在于开发者只重视了软件初始界面的设计,而对软件窗口缩放后所出现的缺陷或估计不足或缺乏对策。能否让软件界面的大小随用户的需求自由改变,而界面中的各个对象随窗口同缩放,做到软件界面始终美丽如初呢?为此,笔者进行了有益的探索,并在vb中得以实现。

2 实现技术

为了保证软件界面始终如一、自适应各种窗口大小,必须做到窗口中的各个对象以及对象的字号、图像等属性随窗口同缩放。为此,在软件启动时首先要用全局数组将原始窗口的大小以及窗口中各个对象的大小、位置及字号等记录下来。然后在窗口的resize事件中进行判断和调整:当窗口宽度改变时,窗口的放大率k=现窗口宽度÷原始窗口宽度,为保证窗口的比例不变,窗口的高度应调整到原始窗口高度的k倍;反之,当窗口高度改变时,窗口的放大率k=现窗口高度÷原始窗口高度,同样需将窗口的宽度调整到原始窗口宽度的k倍;如果窗口的宽高同时改变,则视为窗口的宽度改变即可。最后,为保证窗口中的各个对象同比例缩放,对象的大小(width、height属性)、位置(left、right属性)及字号(fontsize属性)也应在其原始值的基础上乘以k。 为了实现上述功能,用一个二维的全局数组记录每一个对象的left、top、width、height和fontsize属性,然后以对象变量和二维数组的行索引为参数定义两个通用过程getdata和setdata,前者用于获取对象的原始属性值,后者用于设置对象的新属性值。 此外,还要注意以下几个问题: (1)软件启动时,如果窗口的宽度大于屏幕的宽度或窗口的高度大于屏幕的高度时,应使其与屏幕同宽或同高,以避免出现类似于windows的显示属性对话框在分辨率变化时所出现的尴尬局面。 (2)一般应用软件的窗口在最大化时会以屏幕的尺寸为依据进行双向调整,这样就会破坏原有窗口的比例。如果想让窗口最大化但又不想破坏窗口的比例,那么在最大化按钮被单击时,首先使窗口的左上角与屏幕的左上角重合,然后使窗口的一边与屏幕同宽或同高,另一边则按比例放大;究竟要将哪一边调整到屏幕的尺寸要看窗口的宽高比值:若窗口偏宽(窗口宽高比>屏幕宽高比),那么应以屏幕宽度为准作为窗口的宽度,否则应以屏幕高度为准作为窗口的高度;这样可以保证比例不变,而窗口尽可能最大化。 (3)当窗口的高度被调整到非常小,甚至只剩标题栏的高度时,应以窗口的最小宽度(有最大化等按钮时,其值约为1700 twip)为准调整窗口的高度。 (4)对于界面中所显示的图像,最好用图像控件image作为对象,因为此类控件一般都有拉伸属性stretch,只要将其设置成true后显示在其中的图像就会随图像框的伸缩而自动拉伸,始终呈现给用户的是一幅完整的图像。 

3 范例程序

3.1 界面设计

启动vb后在窗体中添加四个控件:一个图像框控件img(先将拉伸属性stretch设置成true,然后用picture属性添加一幅图片)、一个标签控件lab(将autosize属性设置成true,并设置好标题)、一个文本框控件txt(将multiline属性设置成true,并设置好文本)和一个按钮控件cmd(将标题改为“界面增幅10%”,单击此按钮时窗口及各个对象放大10%)。软件界面如图1所示。 图1 软件界面对话框

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 next a(n,1)= a(n,2)= a(n,3)= a(n,4)= a(n,5)=ze if n=1 then a(1,4)=eight: lastwidth=a(1,4) end sub private sub setdata(o as object,n as integer) on error resume next =a(n,1)*k =a(n,2)*k =a(n,3)*k =a(n,4)*k ze=a(n,5)*k end sub private sub form_load() getdata frm,1 getdata img,2 getdata lab,3 getdata txt,4 getdata cmd,5 if > or > then state=2 end sub private sub form_resize() if state=1 then exit sub '最小化 if state=2 then '最大化 state=0 0,0 if >= a(1,3)/a(1,4) then = else = end if end if if lastwidth <> then '宽度变化 k=a(1,3) =a(1,4)*k + 395 else '高度变化 k=eight/a(1,4) =a(1,3)*k end if setdata img,2 setdata lab,3 setdata txt,4 setdata cmd,5 if <= a(1,4)/a(1,3)*1680 then =a(1,4)/a(1,3)*1680 + 395 end if '保证最小窗口也成比例 lastwidth= end sub private sub cmd_click() =*1.1 end sub

3.3 运行情况

程序运行后,不管是拉伸边框、单击放大10%按钮,还是单击最大化按钮,窗口中的四个对象同比例进行缩放,屏幕上始终看到的是一个如图1所示的完整的比例不变的界面。

4 结束语

本文虽然给出的范例程序是基于vb编写的,但文中所谈的技术和方法同样适用于vc++、delphi、c++builder等面向对象的编程语言。

参考文献

[1] 张立科.visual basic 6.0程序设计参考手册[m].北京:人民邮电出版社,2003年 [2] 美steven holzner.visual basic技术内幕[m].北京:机械工业出版社,1999年 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/244191.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学