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

2016-01-29 11:58 62 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

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

作者:吴康彬

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载源代码

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


图一:元素界面

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


图二:美工制作的登陆窗口元素图

  接下去填写xml描述文件,如下:

<?xml version = "1.0" encoding="UTF-8"?  <root <control <ctrlNameBMin</ctrlName  //控件名称 <size                    //控件尺寸 <height18</height    //控件高度 <width18</width      //控件宽度 </size <formPos                //控件在窗体中的位置 <left302</left     //x坐标 <top2</top         //y坐标 </formPos <action                //事件效果图片位置 <normal //普通              <left0</left//x坐标              <top268</top  //y坐标 </normal <mouseUp //鼠标放上              <left0</left              <top291</top </mouseUp <mouseDown//鼠标按下              <left0</left              <top314</top </mouseDown
<disable/ //失效
<focus/ //获取焦点 </action </control <control <ctrlNameBClose</ctrlName <size <height18</height <width18</width </size <formPos <left327</left <top2</top </formPos <action <normal <left28</left <top268</top </normal <mouseUp <left28</left <top291</top </mouseUp <mouseDown <left28</left <top314</top </mouseDown </action </control
... //省略了其它的一些元素"<controls/"
</root
  到此美工人员的任务就算大功告成了。(其实程序员和美工 可以同步进行,程序员不必去考虑界面元素的布局,因为整个软件最终的效果都是有美工控制,程序员要实现的只是解析xml数据,使界面元素按照给定的参数显示就可以。)
  如果程序中每次动态的去解析xml文件,然后安置控件,有可能会比较慢,特别是当界面元素比较多的时候,频繁的读和解析xml会有明显的停顿。所以我的做法是这样的 :首先定义一个结构体,获取所有的界面元素。分析xml文件把所有的控件元素信息一次性解析完。这样速度快很多。
typedef struct Ctrls    {   String ctrlName; //控件名称    TPoint formPos; //控件在窗体中的位置 int width; //控件宽度 int height; //控件高度 bool hasNormal; //是否有普通效果图片 bool hasMouseUp; //是否有鼠标放上效果图片 bool hasMouseDown; //是否有鼠标按下效果图片 bool hasDisable; //是否有失效效果图片
bool hasFocus; //是否有得到焦点时效果图片 TPoint normal; //普通效果图片在整个图片中的位置 TPoint mouseUp; //鼠标放上效果图片在整个图片中

来源:http://www.tulaoshi.com/n/20160129/1484068.html

延伸阅读
1。Oracle中: select org_id from organizations start with org_id= :org_id connect by prior org_id=supervision_org_id order by supervision_org_id 2。Sql Functiong:  FunctionNo SubFunctionNo SubFunctionType     01.   systemadmin Privilege 0     01.   systemadmin subsysadmin 1(表示樹...
使用免费界面换肤软件 USkin 作者:thirdwolf  下载源代码 一、介绍 我们都知道,Skin以前是一项比较难的技术。但至从WindowsXP推出以来,Skin或者说Theme变得很普遍。虽然WindowsXP可以支持Theme,但当我们改变WindowsXP的风格时,所有支持WindowsXP风格的应用程序都变成一样的风格,如何...
一、实现对话框 ATL中有三个模板类可用于创建一个对话框: (1)CSimpleDialog:创建模式对话框, 可以host Windows Controls template < WORD t_wDlgTemplateID, BOOL t_bCenter = TRUE > class CSimpleDialog : public CDialogImplBase (2)CDialogImpl:创建模式或非模式对话框, 可以host Windows Controls ...
摘要:本文根据Winsock技术及网络通信原理, 利用VC++编程技术,通过网络数据传输在客户端得到实时温度运行图形,实现了对人工气候室温度运行状况的远程监控, 满足了低成本、高效率的实时自动化要求。 1 引言 随着网络技术的不断发展进步,网络对整个社会产生了深远的影响。由此也出现了以网络为基础的监控治理新框架。实现基于网络的设备远程监...
1.在ORACLE中实现SELECT TOP N    由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。   简单地说,实现方法如下所示:   SELECT 列名1...列名n FROM     (SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n) &...

经验教程

803

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部