快速业务通道

软件换肤技术在BCB中的实现

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

本文配套源码

看一个软件是否优秀,除了功能健全、性能稳定、容易操作之外,软件界面的美观越来越受到人们的关注。人们不满足于传统的矩形windows窗体,不规则窗体的软件到处可见,更进一步发展到软件界面由用户根据自己的爱好自由控制,真正实现了软件对用户的友好性。而要实现这一功能,软件换肤技术就是基础。下面我就介绍一种简单明了的方法来制作一个登陆对话框 ,本程序编程环境C++Builder:
  首先由程序员根据功能要求定义界面元素(控件),特别值得注意的是控件的名字。如下图:

图一:元素界面
  其次,美工人员根据该界面元素画图。程序员和美工之间的桥梁是通过一个xml描述文件,也就是说美工每画好一幅图后就要填写一个xml文件。该xml文件需要包括的内容有:每个界面元素在该图中的坐标、元素的 尺寸、元素在窗体中的坐标、当鼠标放上、按下、弹起以及普通、失效等效果图在整个图片中的位置。如下图:

图二:美工制作的登陆窗口元素图
接下去填写xml描述文件,如下:<?xml version = "1.0" encoding="UTF-8"?>
<root>
<control>
<ctrlName>BMin</ctrlName> //控件名称
<size>          //控件尺寸
<height>18</height>  //控件高度
<width>18</width>   //控件宽度
</size>
<formPos>        //控件在窗体中的位置
<left>302</left>   //x坐标
<top>2</top>     //y坐标
</formPos>
<action>        //事件效果图片位置
<normal> //普通
  <left>0</left>//x坐标
  <top>268</top> //y坐标
</normal>
<mouseUp> //鼠标放上
  <left>0</left>
  <top>291</top>
</mouseUp>
<mouseDown>//鼠标按下
  <left>0</left>
  <top>314</top>
</mouseDown>
 <disable/>   //失效
 <focus/>    //获取焦点
</action>
</control>
<control>
<ctrlName>BClose</ctrlName>
<size>
<height>18</height>
<width>18</width>
</size>
<formPos>
<left>327</left>
<top>2</top>
</formPos>
<action>
<normal>
 <left>28</left>
 <top>268</top>
</normal>
<mouseUp>
 <left>28</left>
 <top>291</top>
</mouseUp>
<mouseDown>
 <left>28</left>
 <top>314</top>
</mouseDown>
</action>
</control>
...  //省略了其它的一些元素"<controls/>"
</root>

到此美工人员的任务就算大功告成了。(其实程序员和美工 可以同步进行,程序员不必去考虑界面元素的布局,因为整个软件最终的效果都是有美工控制,程序员要实现的只是解析xml数据,使界面元素按照给定的参数显示就可以。)

如果程序中每次动态的去解析xml文件,然后安置控件,有可能会比较慢,特别是当界面元素比较多的时候,频繁的读和解析xml会有明显的停顿。所以我的做法是这样的 :首先定义一个结构体,获取所有的界面元素。分析xml文件把所有的控件元素信息一次性解析完。这样速度快很多。

typedef struct Ctrls
  { 
String ctrlName; //控件名称 
TPoint formPos; //控件在窗体中的位置
int width; //控件宽度
int height; //控件高度
bool hasNormal; //是否

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号