年终总结(二),软件皮肤(SKIN)技术

etomahawk 2008-12-28 11:20:27
加精
我很喜欢界面处理这块,所以,一直对于软件界面很在意。因为我相信,一个好的软件,不仅仅是功能强大,稳定的,而且,它的人机交互功能也应当是最棒的。
很多人认为界面没什么,不就是贴图吗?SKIN就是贴图,但是要想做好的话,还是要花费相当大的精力,对于你的基础知识是一个考验。
在论坛里也经常看到有人想了解这方面的内容,今天就对我所了解的软件的界面技术(SKIN)进行一下总结,有什么地方说的不对的还请大家帮忙纠正。

这里是原帖的地址,发表在我的博客里的:
http://etomahawk.popo.blog.163.com/blog/static/919644820081128105845384/

Demo下载地址(一个简单的对进程里<更确切的说是线程>中的BUTTON控件进行换肤):
http://download.csdn.net/source/916751/

Demo界面:


窗体内建滚动条换肤代码下载地址:
http://download.csdn.net/source/917314

同样,本帖的得分规则参照前一贴。

本贴的主角:软件SKIN技术
内容(转一部分,感兴趣的话到原帖看吧):

软件的皮肤技术,简单的总结一下,可以用两个字来表示:自绘(或者说贴图)。当然,具体的效果如何,就要看你的基本功如何了。
根据实现的方式,可以分为两类:
A. 对现有的标准控件的换肤。Appface, Skin++, VCL Skin,SkinBuilder等一批换肤软件就是该类的代表。
B. 自己编写控件。AlphaConttrol, RZ系列控件就是该类的一些代表。这类控件库在delphi中尤其多。

编写皮肤需要基本功:

A. Windows 绘图技术。
既然是要换肤,当然要进行绘图,而要进行绘图,则必须了解Windows的一些绘图函数和Window控件的绘制过程。

B. Windows消息系统的了解。
Windows是一个消息驱动的系统,所以,我们必须对这个消息系统有所了解。我们必须了解一个控件是如何被绘制出来的,在绘制过程中都触发了那些消息。然后,我们过滤这些消息,在里面进行处理。

C. Windows API的了解。
对于一些特殊的控件,仅仅靠消息是不行的,必须依靠API HOOK技术。所以,我们必须对API有所了解。
(更多的内容请到原帖地址)
..........
...全文
3853 154 打赏 收藏 转发到动态 举报
写回复
用AI写文章
154 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程保姆 2012-07-02
  • 打赏
  • 举报
回复
牛人一个
mcsma801214 2012-06-17
  • 打赏
  • 举报
回复
很好的材料。。。。。顶一下。。
嵌入式Linux, 2012-04-26
  • 打赏
  • 举报
回复
想问一下,你做的这个东西可以在builder6.0里面使用的吗?
rainychan2009 2011-07-16
  • 打赏
  • 举报
回复
mark
gxhtjs001 2011-07-14
  • 打赏
  • 举报
回复
学习了……
meijisu 2011-04-12
  • 打赏
  • 举报
回复
支持分享贴
  • 打赏
  • 举报
回复
支持楼主的奉献精神
sghff110 2010-10-04
  • 打赏
  • 举报
回复
up ……
longlonglong25 2010-05-04
  • 打赏
  • 举报
回复
learning
etomahawk 2009-01-11
  • 打赏
  • 举报
回复
to 64 shuihan20e:
没有实际内容,唬人的
-----------------------------------------------------------------------------
首先,这仅仅是一个总结,没有写太多技术方面的东西。
其次,给初学者一个方向,减少他们研究不必要的弯路。不是做一个实际的东西,然后告诉你,皮肤就这么做!
如果你有更好的内容,也希望你能共享给大家,谢谢!

to 65 hurryboylqs:
我看了下,你的滚动条还是绘的有点问题,拖动一下马脚就漏出来了(隐隐能看到原先的颜色)

to 91 flyingxu:
滚动条的那个,还是有点闪啊

-----------------------------------------------------------------------------
这是很早以前写的代码,由于当时也没有应用到项目,就没再认真研究,所以有BUG在所难免,见谅!

to jennyvenus:

做的很不错,俺是一点不会,可是各人审美观念相差很大,不知道楼主在这方面有还有什么心得,如何做出来界面让更多的人觉得不错。
-----------------------------------------------------------------------------
呵呵,说到这个,其实我也是在模仿。还没有达到创新的地步。毕竟我不是专业的UI设计师。
好的东西还是值得借鉴的。以前看过一本书,讲到微软每个版本发布的时候,都会请一批人去专门为他们测试。他们会记录用户的操作习惯,爱好等,供他们改进产品。既然已经有人做过这样的测试,那我想我们是可以模仿他们的。要做出专业的东西,还是要靠专门的界面设计人员。
个人的观点就是,把你自己当成客户来测试你的软件,如果你都觉得软件不好看,不好用,就别指望客户给你好的评价。另外就是在灵活性上增加一些东西,比如A喜欢第一种布局,B喜欢其他布局,尽可以多的给他们一些选择。

to 100 pomelowu:

可惜預覽圖看不到。
-------------------------------------------------------------------------------
被网易的链接防盗过滤掉了。

to 140 dalao812:
hook 技术当然是最简便的,自绘还是比较麻烦 。
如果是一套皮肤库 必然会才好用hook 对于简单的几个控件的皮肤 采用 自绘可以的

-------------------------------------------------------------------------------
各有个的优缺点。
HOOK可以将界面和实现逻辑完全分离开来。开发人员可以只关注实现逻辑。自己编写控件的灵活性更大一些。

感谢各位的参与,祝大家在新的一年里,万事如意,天天开心!
zhao_yong 2009-01-10
  • 打赏
  • 举报
回复
學習。
cbolg 2009-01-08
  • 打赏
  • 举报
回复
感兴趣!学习!
wfl568 2009-01-08
  • 打赏
  • 举报
回复
感谢楼主!
aniugee 2009-01-04
  • 打赏
  • 举报
回复
学习了
dalao812 2009-01-04
  • 打赏
  • 举报
回复
hook 技术当然是最简便的,自绘还是比较麻烦 。
如果是一套皮肤库 必然会才好用hook 对于简单的几个控件的皮肤 采用 自绘可以的
GUGUYA 2009-01-03
  • 打赏
  • 举报
回复
为什么我们只能在竟表面,而不能深入呢
daomin5832 2009-01-02
  • 打赏
  • 举报
回复
ddddddddddddddddddddddddd
linzi 2009-01-02
  • 打赏
  • 举报
回复
学习
linzi 2009-01-02
  • 打赏
  • 举报
回复
学习
dlschan 2009-01-02
  • 打赏
  • 举报
回复
ding
加载更多回复(133)
仅限学习研究之用,切勿用作商业用途,请在下载后24小时之内删除,本人不承担任何责任。 鸿运年会抽奖软件是功能强大的年会抽奖软件,界面大气漂亮,可设置不同的抽奖形式,自定义抽奖人数和奖项数,滚动显示抽奖人的照片和名字,极简单的设置方式。在年会和各种晚会用最合适了。 鸿运年会抽奖软件历经上千家公司和个人实践检验,好评百分百!还可以根据您的需求定制开发(按复杂度酌情加收费用)。 鸿运年会抽奖软件功能特点简介: *公正、公平、不重复中奖 *界面美观大方,鲜明的中国传统色彩(可选喜庆类、人文类、科技类等诸多界面) *运行稳定 功能强大 简洁易用 美观流畅 *支持显示序号;号码滚动显示 *支持自定义背景音乐;可自定义各奖项获奖人数;可自定义重复抽奖规则; *支持双显示器(例如笔记本电脑连接投影仪) *支持外部数据加入(加入大量附加数据稳定版) *支持一次抽出全部中奖者或者分多次抽出中奖者 *支持显示抽奖活动所有抽出的中奖者 *支持中奖名单保存.支持一键抽奖; *支持“抽奖参数”保存,下次打开时“直接使用” *支持:“文字字符窜抽奖” *支持非号码数字抽奖,即支持姓名等中文字符抽奖 *可根据客户的需要定制开发,软件界面及其他均可定制开发 鸿运年会抽奖软件适用于各单位年终抽奖、晚会抽奖、姓名抽奖、编号抽奖、手机号码抽奖、身份证号码抽奖、企事业单位抽奖、电视台抽奖、屏幕抽奖、LED抽奖

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧