关于软件的SKIN技术

类别:.NET开发 点击:0 评论:0 推荐:
关键字: 界面 SKIN    作者:董含君

界面是拼出来的.

你看到的最终界面实际上就是一个PictureBox(或者类似的设备),VC的朋友都理解,我们看到的全部的界面实际上都是"画"在窗体上的,只不过微软已经为我们做好了一切的重画工作罢了.如果自己像这么作,就要重复这部分劳动,不要觉得复杂,因为这是必然的.等你习惯了就行了(不难,就是耗时间)

方法1:配置文件配置的SKIN
所谓的脚本(不是脚本,应当说是配置信息)

比如 conf.ini

描述的就是 XX 按键的按下去位图文件是 xx1.bmp  松开的时候是xx2.bmp 悬浮的时候是 xx3.bmp  平时 是 xx0.bmp   

然后描述 按钮XX的位置

10,10,200,100


举例

'conf.ini
[main]
bmpdir=bmp   '指定位图文件目录
wavdir=wav   '指定wav文件目录

[butXX]   '按钮XX相关
top=10
left=10
height=100
width=200
Style0=xx0.bmp
Style1=xx1.bmp
Style2=xx2.bmp
Style3=xx3.bmp
tooltip=按钮XX的浮动提示
wav=ding.wav

[but2]
.....

[but3...]

配置完成之后,应用程序再读取这个ini 就可以了

假设你读取的函数是LoadINI(段名称,键名称) 返回 类型为字符串


Dim SkinBMPDir as string
dim SkinWAVDir as string

sub form_load()
loadskin "./skin/default/conf.ini"
end sub

sub loadSkin( conffile as string)

SkinBMPDir =loadini("main","bmpdir")
skinWavDir =loadini("main","wavdir")

imgButXX.top=cint(loadini("butxx","top"))   '''(定义位置)
imgButXX.left=cint(loadini("butxx","left"))
...
imgButXX.image=loadpicture(skinbmpdir+loadini("butxx","Style0"))  ''读取图片
...


end sub

实际上SKIN就是这样,或者差不多,就是一个数据配置文件

2 脚本配置

所谓的脚本就麻烦了,需要有脚本引擎解释.比如游戏界面里的那些操作界面,都是脚本实现的,怎么??你不相信!!!只不过一般你用不到这么复杂就是了

假设你的程序像OFFICE一样支持VBA,那么你的脚本应该是这样的

conf.cfg

'假设你的程序对每个按钮都有定义,比如classButXX类的对象ObjButXX
objButXX.top=...
ObjButXX.Style0=loadpicture("...
'中间对界面的配置由脚本来完成...

请参考叶凡达人的文章

VBScript脚本运用(脚本程序与宿主程序的交互) http://blog.csdn.net/yefanqiu/archive/2004/10/15/137928.aspx

VBScript脚本运用 http://www.bjjr.com.cn/YeFan/SourceCode/YFVBScript.rar



3 PlugIn技术

最后就是插件技术了

就是动态加载DLL

记得怎么用API么, declare function xxxx lib .....
VC有个LoadLibrary(忘了,也好想是delphi 我搞混了,VC Delphi反正两个都有)
VB没有,只能用WinAPI来动态加载dll

然后再dll提供同一的接口函数,比如confSkin()
主程序开始的时候,根据配置,动态加载 某个dll,然后配置工作交给dll的confSkin()完成

插件技术也是如此,比如不顾定的计算方法(例如WinAmp的屏幕动画),固定去调用某个dll的固定函数就可以了.

随着技术的进步,XML的大量引用,函数可以不顾定,dll也可以不顾定.
Flash也可以做界面...
HTML做界面的也越来越多了...
微软最新的例子演示了怎样用D3D来使用组件...

唉,老了,跟不上时代了

本文地址:http://com.8s8s.com/it/it41776.htm