论文网首页|会计论文|管理论文|计算机论文|医药学|经济学论文|法学论文|社会学论文|文学论文|教育论文|理学论文|工学论文|艺术论文|哲学论文|文化论文|外语论文|论文格式
中国论文网

用户注册

设为首页

您现在的位置: 中国论文网 >> 计算机论文 >> 计算机应用论文 >> 正文 会员中心
 计算机应用论文   计算机理论论文   计算机网络论文   电子商务论文   软件工程论文   操作系统论文   通信技术论文
让软件界面始终美丽如初
 ——窗口大小可变、对象比例不变     摘  要 针对软件界面因窗口大小的调整而出现的各类问题,本文提出了解决这类问题的技术、方法及有关的注意事项,并给出了用vb编写的范例程序。     关键词 软件界面;同比例缩放;实现技术;vb;对象变量  

1 引言

    界面是软件的脸面!软件是否好用、能否被用户所接受,界面起着很重要的作用。然而,在我们所使用的各类软件中,常常出现软件界面因窗口大小的调整而发生变化,以至于出现捉襟见肘、比例失调甚至“献丑”的窘境;也正因如此,许多软件开发者又采用较为保守的设计思想,将软件界面设计成fixed,禁止用户调整大小;还有一些软件在改变显示分辨率后出现界面不完整的现象,如windows的显示属性对话框,当显示分辨率从1024×768调整到640×480时,无法看到界面底部的三个关键按钮:“确定”、“取消”和“应用”;除非重新启动计算机!这一切均给用户带来诸多不便,究其根源还在于开发者只重视了软件初始界面的设计,而对软件窗口缩放后所出现的缺陷或估计不足或缺乏对策。wWw.11665.COM能否让软件界面的大小随用户的需求自由改变,而界面中的各个对象随窗口同缩放,做到软件界面始终美丽如初呢?为此,笔者进行了有益的探索,并在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)=o.left   a(n,2)=o.top   a(n,3)=o.width   a(n,4)=o.height   a(n,5)=o.fontsize   if n=1 then a(1,4)=o.scaleheight: lastwidth=a(1,4) end sub private sub setdata(o as object,n as integer)   on error resume next   o.left=a(n,1)*k   o.top=a(n,2)*k   o.width=a(n,3)*k   o.height=a(n,4)*k   o.fontsize=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 me.width>screen.width or me.height>screen.height then me.windowstate=2 end sub private sub form_resize()  if me.windowstate=1 then exit sub '最小化  if me.windowstate=2 then '最大化    me.windowstate=0    me.move 0,0    if screen.width/screen.height >= a(1,3)/a(1,4) then      me.height=screen.height    else      me.width=screen.width    end if  end if  if lastwidth <> me.width then '宽度变化    k=me.width/a(1,3)    me.height=a(1,4)*k + 395  else '高度变化    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 then    me.height=a(1,4)/a(1,3)*1680 + 395  end if '保证最小窗口也成比例  lastwidth=me.width end sub private sub cmd_click()   me.width=me.width*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年
  • 上一个计算机论文:
  • 下一个计算机论文:
  •  作者:木沙江·加帕尔 [标签: 软件 界面 美丽 ]
    姓 名: *
    E-mail:
    评 分: 1分 2分 3分 4分 5分
    评论内容:
    发表评论请遵守中国各项有关法律法规,评论内容只代表网友个人观点,与本网站立场无关。
    软件工程在学校录取新生系统上的应用
    软件工程的应用与实践
    基于项目驱动模式下的“软件工程”教学改革
    软件工程实验软件装置的研究与应用
    基于软件工程开发的企业本体构建研究
    农业院校软件工程专业语言实践类课程教学改
    “三步教学法”对提升软件工程双语课堂效果
    项目驱动的软件工程课程案例式分段情景教学
    软件工程的发展动态
    软件工程专业硕士研究生课程体系设置初探
    计算机应用软件开发技术探讨
    基于Java的局域网通信软件的设计与实现
    | 设为首页 | 加入收藏 | 联系我们 | 网站地图 | 手机版 | 论文发表

    Copyright 2006-2013 © 毕业论文网 All rights reserved 

     [中国免费论文网]  版权所有