QQ皮肤制作初级教程(另附上“QQ2003皮肤制作帮助手册”)
原文摘录于网上,但很多地方经本人修改和完善,修改处用(红色字体)表示。
原文-http://bbs.ye-soft.net/thread-3464-1-1.html
DT关于QQ皮肤制作教程也有几个,但个人觉得这个狠详细.所以转载了!希望对制作QQ皮肤的朋友有帮助!
一、工具
工欲善其事,必先利其器。有很多同类工具,我只说我用的
1、photoshop,这个是最主要的工具了,没了它你能用画板画出很精致的图也行
(必备1,改图润色全靠它)
2、iconworkshop,制作和修改图标,全靠它
(必备2,ico文件的修改和生成)
3、emeditor,没有的话,用window记事本也能搞定一切
(推荐,非常适合查看代码,并有专业的脚本配置方案)
4、reshacker,习惯用这个来修改资源文件
上面4个是必备的,辅助工具还有
5、color schemer studio,习惯用它取色,调色
6、calc,做皮肤讲究细节精确,因此计算器也是需要的
7、stuffit,解压mac格式的压缩包,配合iconworkshop使用
……
二、基础
其实都不是必须的,我最开始也是什么都不懂。最关键的是要有兴趣和耐心,这就无敌了。
(我开始也是读代码自学的)话虽这么说,不过还是希望你继续看下去之前明白下面两个“基础”:
1、ps基础,基本的操作要懂,对图片的基本加工要会。不懂的话,要学会临时折腾,久了,就熟。
(推荐教程:大师之路。非常简单易懂,需要的朋友请登录www.99ut.com,“文字教程”是免费的)
2、代码基础,代码不是很难,简单的xml和vbs,只要有耐心,看它一下午你自然就什么都会了
如果你一碰ps就头疼、一看code就吐血,强烈建议就此打住,别再往下看,出了人命我不负责
三、QQ坐标
先来了解QQ的坐标,看图:
(原图以失效,这里简略给大家画一张)
(简单来说就是以左上角为基准)
cx、cy
(意指VBScript.vbs里使用的代码)是QQ面板当前的宽度和高度,c代表current
用A代表面板上任意一个元素,可以是按钮、文字或图片等,A的坐标为(A.left, A.top)
这张图很好懂吧,嘿嘿,考你一下,怎样确定一个按钮的位置?譬如,下面这张图里的最小化按钮的坐标应该怎样给?
(原图已失效,又来画一张简图吧- -,以QQ2007原版皮肤为例)
假设这个按钮的名称是topBtnMin,那么答案是:
topBtnMin.left = cx - 53
topBtnMin.top = 6
53和6是具体算出来的,换了皮肤可能是其它值,但left值一定是cx - 53这种格式,53表示的是最小化按钮和面板最右边的距离。当你拉伸面板时,cx是一个变量,但最小化按钮始终是靠右的,因此它的x坐标需要设定为cx - 53。这里千万要想清楚,很简单的道理。好了,现在问你,下面的图又如何呢
(原图已失效,又是我。。。)
答案:
状态选择按钮的坐标是left = 86, top = 22
天气按钮的坐标是 left = cx - 43, top = 22
数值具体皮肤都不同,形式则必然是上面的样子。做对了没?没做对的打ppemoticon
坐标没弄糊涂的,跟我继续
四、解读config.xml文件
打开QQ2007的自带皮肤
(人人都有)文件夹里的config.xml,如图
(继续补图)
如果有一款QQ皮肤拉不宽,那么只要将maxWidth的值改大一些就行。但请注意,如果是一款精心设计的皮肤,同时限定了最大宽度,那一定是有理由的,譬如,很可能拉得太大时会变形等。因此没必要时,不要修改这些值。
默认的透明色是紫色,这主要是因为QQ现在还不支持png,只支持bmp位图(动态皮肤里可以用gif,但支持得并不好),bmp没有透明色,因此把紫色部分显示为透明
好了,继续看下面的
(补图)
这一部分是背景图的代码,被切割成上中下三部分,每部分又被切割成左中右三部分,我简单的说一下各项的含义
id 是这个图片的唯一标志符
left、top是坐标
width、height是宽高,一般就是原图片的宽高,如果用QQ来缩放,效果很差
image是图像名
zindex是层叠数,越在上面的,zindex越大
其它的不多说,很少用到
除了Picture对象,最常用的还有Text和Button对象,属性都和上面的一样,类推即可
可以发现,最常用的对象就三个:Picture、Button和Text
最常用的属性: id、坐标、大小、zindex以及tooltips
对于button,一般还有image、downimage、hoverimage三个属性,分别代表一般状态时显示的图片,鼠标按下时的图片,以及松开鼠标时的图片
visible属性是很有用的,设置为false,则不可见,默认是true。点击切换头像就是利用这个属性来实现的
cur属性是光标,就是那只小手
Text一般还有fontfamily
(字体类型)等属性,这些和CSS里面的概念是一模一样的,不多说
好了,对config.xml理解了吗?注意里面各行的顺序是可以随便怎么写的,除了开头和结尾。
五、vbscript.vbs文件
如果你有vbs的基础知识,则你完全能自己看懂这个文件,可以跳过此节
如果你没有vbs的基础,建议你先学学vbs,然后也能看懂
于是我不用写了
呵呵,真想偷懒不写啊。代码这东西,会的一看就明白,不会的十个谭浩强也给他讲不清楚。我简单的说一下吧
Dim是定义变量,VBS和JS都是宽松类型的语言,因此不必显式定义变量的数据类型
Sub functionname()
End Sub
这是定义函数
ok,有这两点知识就可以了。说一下TX皮肤里最重要的几个函数
首先是
Sub Window_OnSize(cx,cy)
这个是拉伸面板大小时调用的函数,分析函数里面,
Window.LockPaint() 顾名思义,锁定绘图
然后全是left = … top = …,这些就是面板上各种按钮的位置坐标
如果某个按钮(如头像)的left和top值是定值,则直接在config.xml里赋值就可以了,需要在vbscript.vbs里赋值的都是需要动态改变的
最后是 Window.UnLockPaint() 解除绘图锁定
知道了上面这个函数,想必你已经清楚如何增添一个按钮了
譬如要增添一个QQ宠物按钮,只要在config.xml里添加
当然,先得PS好bmp图片,或者用ico也行,不过上面的代码得改成
在xml和vbs的OnSize函数里设置好位置参数,这样就添加了一个宠物按钮
这时宠物按钮点击不会有任何反应,请回来继续听课,呵呵
接着你会看到这样一些函数,
Sub topBtnMin_onClick()
Window.ExeCommand 1,2
End Sub
onClick,顾名思义,就是点击时调用的函数
对于QQ宠物,点击函数为
sub petOpenBtn_onClick()
Window.ExeCommand 40,12
end Sub
Sub petCloseBtn_onClick()
Window.ExeCommand 40,13
End Sub
将上面的代码加进vbs,你的宠物按钮就可以用了。
添加其它按钮也是这样,很简单吧?
说明,Window.ExeCommand n,m是QQ内部的一些命令,我收集整理了一部分,但一直没有得到详细的列表,如果那位在TX工作的,可以弄到全部的命令,别忘了告诉我哦
Window.ExeCommand
(红色为本人整理)
1,1 皮肤管理器
1,2 最小化
1,3 关闭
3,2 显示旧搜索栏
3,1 隐藏旧搜索栏
4,1 聊天室
4,2 发送手机短信
4,3 查找用户
4,4 腾讯浏览器
4,5 QQ游戏
4,6 信息管理器
4,7 颜色改变
4,8 我的钱包
4,9 面板选择
4,13 MyQQ
4,14 QQ问问
4,15 QQ会员
7,1 QQ邮箱
15,1 安全中心
16,1 QQ家园
25,1 QQ音乐
26,1 QQLIVE
27,1 DNA密码保护
40,12 打开QQ宠物
40,13 关闭QQ宠物
50,1 显示信息
60,2 个人设置
61,0 天气预报
62,0 停止邮箱动画
66,0 QQ空间信息
除了onClick函数,还有onMouseMove、onMouseLeave等,这些函数的用处,金山词霸就能告诉你
然后翻到最下面,找到
Sub Window_OnNotify(code ,var)
这是接收到消息时皮肤上的一些反应,更改状态按钮,动态提示消息,全部在这里,认真看看就明白哦
到此为止,QQ原版皮肤自带的vbs函数基本上就分解完毕
下面说说我增添的函数
首先是头像切换函数
‘更换头像
sub StatusPic_onClick()
Window.LockPaint()
PictureBorder.visible = false
StatusPic.visible = false
StatusWeather.visible = true
Window.UnLockPaint()
end sub
sub StatusWeather_onClick()
Window.LockPaint()
StatusWeather.visible = false
UserPic.visible = true
PictureBorder.visible = true
Window.UnLockPaint()
end sub
sub UserPic_onClick()
Window.LockPaint()
PicIndex = PicIndex + 1
IF PicIndex > 1 then
PicIndex = 1
UserPic.visible = false
StatusPic.visible = true
End if
UserPic.image = Path & "pic" & PicIndex & ".bmp"
Window.UnLockPaint()
end sub
如果认真看了我上面讲的基础知识,这个函数的功能不说也清楚了吧,嘿嘿
vbs里,调用外部函数的代码是
tmp="CQQCfg.exe"
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(tmp)) Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run tmp
else
msgbox "咦,你安装的是珊瑚虫版吗?" & chr(10) & "我找不到CQQCfg.exe文件呢。",,"错误提示"
end if
改变tmp的值,就可以调用任何外部函数了
注意:QQ自带的vbscript.dll文件不支持外部调用,要外部调用,必须用我皮肤包里那个破解的vbscript.dll文件覆盖原来的
(或者用WINDOWS自带的vbscript.dll修改也行)
灵活一点的,肯定会想到,也可以在QQ面板上放个记事本按钮,呵呵。你甚至可以把常用的软件的快捷方式都放在QQ皮肤上,把QQ打造成一个Dock软件,彻底改变QQ的用处,嘿嘿……
最后说一点的是,只要vbs里能用的,在QQ皮肤里都能用
曾和先锋的一位好友一致同意: QQ皮肤、Sam、Kon等都是有限的,但脚本却是无限的……
结合脚本,你可以在QQ上显示foobar的音乐信息,并控制foobar的播放,或者,远程操纵一台电脑……别笑,都是有可能的……音乐控制我曾实现过,远程控制老板的电脑就交给你了……
2#继续...