教你怎样用SkinMagicBuilder制作皮肤
如何绘制人体皮肤

如何绘制人体皮肤
皮肤恐怕是我们在制作角色时最常碰到的一个难题。
很多时候我们绘制出来的皮肤看起来总是很呆板,那是因为我们没有掌握好皮肤上丰富的颜色变化。
下面是一个step by step的简单实例,用来演示一个亚洲男性的皮肤颜色变化。
首先我们为皮肤区域填充图中所示的略微偏红的土黄色。
(谁叫我们是黄种人呢?)
接着我们用下图底部方块所示的暗红色涂抹上皮肤的暗部,而亮部则保留我们刚才填充的土黄色。
注意在绘制暗部的时候,一些大的肌肉转折可以尝试把明暗交界画得硬一点。
但不可整条交界线都硬,要时软时硬,相互过渡。
接着我们用下图底部方块所示的大概25%的亮蓝色叠加上从我们绘制的皮肤的中等亮度区域取来的棕色,这样就得到了第三个方块所示的颜色。
我们用这个颜色来涂抹暗部与亮部交界的区域。
接下来我们在photoshop里选择下图底部方块所示的亮蓝色,并将笔刷的模式选为LinearDodge,然后涂抹出高光区域。
注意在一些明暗交界比较硬的地方可以适当的涂抹一点高光加强一下。
最后我们用普通笔刷选择下图方块所示的亮红色围绕高光的边缘进行涂抹,注意不要把高光全给盖住了。
最后我们的皮肤贴图就绘制完成了。
不同人种或性别的皮肤在绘制时只需要改变第一步所填充的底色就可以了。
使用SkinMagic美化界面

使用SkinMagic美化界面网络上的SkinMagic版本繁多,而且试用版,破解版并存,各版本之间支持的皮肤文件也不尽相同,因此经常有人在网上询问为何添加了SkinMagic没有效果甚至导致程序崩溃之类的问题、这里有一个可用的破解版本(包含VC6使用的库和支持的常用皮肤文件)SkinMagicToolkitV2.2.31、请注意这个包的大小为1.31M,如果小于1.31M说明下载不完全,则无法使用,建议使用迅雷下载、一:文件说明SkinMagicLib.h 必须的头文件,请添加到工程中、SkinMagic.lib + SkinMagic.dll 动态链接库配套使用编译时需要在工程中添加SkinMagic.dll,程序运行时需要SkinMagic.dll以下版本的编译出来的程序运行时不再依赖SkinMagic.dllSkinMagicLibMD6.lib 静态链接库,用于VC6的Release版编译SkinMagicLibMT6.lib 静态链接库,用于VC6的Debug版编译二:使用步骤1、把SkinMagicLib.h, SkinMagicLibMT6.lib, SkinMagicLibMD6.lib放到你的VC6工程目录下2、在StdAfx.h中添加#include "SkinMagicLib.h"3、在工程设置中添加对应的库Win32 Release中填上SkinMagicLibMD6.libWin32 Debug中填上SkinMagicLibMT6.lib4、在InitInstance()函数的开始处添加初始化SkinMagic资源的代码、VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));5、在InitInstance()函数中加载皮肤文件并设置程序皮肤、你可以选择添加皮肤文件到资源中,并编译到程序中、或者程序在运行时动态加载皮肤文件a. 比如添加corona.smf,设置资源类型为"SKINMAGIC", 资源ID为IDR_SKIN_CORONA CBossKeyDlg dlg;m_pMainWnd = &dlg;//加载SkinMagic皮肤VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_CORONA, "SKINMAGIC"));VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));VERIFY(1 == SetDialogSkin("Dialog"));int nResponse = dlg.DoModalEx(bStartShow);if (nResponse == IDOK){}else if (nResponse == IDCANCEL){}b. 程序在运行时动态加载皮肤文件CBossKeyDlg dlg;m_pMainWnd = &dlg;//加载SkinMagic皮肤VERIFY(1 == LoadSkinFile("corona.smf"));VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame")); VERIFY(1 == SetDialogSkin("Dialog"));int nResponse = dlg.DoModalEx(bStartShow);if (nResponse == IDOK){}else if (nResponse == IDCANCEL){}6、在ExitInstance()函数中释放SkinMagic资源//释放SkinMagic资源:ExitSkinMagicLib();。
利用Blender制作逼真的皮肤材质效果

利用Blender制作逼真的皮肤材质效果Blender是一款强大的3D建模软件,它提供了丰富的材质和节点系统,使得艺术家能够制作出逼真的皮肤效果。
本教程将教你如何利用Blender制作逼真的皮肤材质效果。
首先,创建一个人物模型。
在建模过程中,确保你的模型拓扑结构合理,拥有适当的分辨率。
一个好的拓扑将有助于后续的细节制作和材质渲染。
接下来,打开Blender的材质面板。
选择一个合适的材质槽,并添加一个新的材质。
然后,在节点编辑器中添加一个皮肤材质。
进一步,为皮肤材质设置基础色彩。
选择一个与你所需皮肤肤色相近的基础色彩,在材质节点中调整其强度和亮度。
你也可以使用图像编辑器中的纹理来添加更多的细节。
为了使皮肤看起来更真实,添加一些细微的质感变化是必要的。
在节点编辑器中,你可以添加子表面散射(SSS)效果。
通过控制SSS节点的散射半径和颜色来模拟皮肤的散射光。
另外,你可以添加一些纹理来增加皮肤的细节。
使用图像编辑器来导入一张纹理贴图,然后将其链接到材质节点中。
通过调整纹理的强度和反射参数,可以实现细节纹理的自然效果。
除了纹理,皮肤上的一些特殊效果也可以用节点来实现。
例如,添加一个镜面节点,来模拟皮肤的光泽效果。
通过调整镜面节点的高光大小和强度,你可以让皮肤看起来更加光滑和有光泽。
最后,你可以通过调整环境光等参数来增强整体的渲染效果。
环境光的设置将直接影响到皮肤的色彩和阴影效果。
经过以上一系列步骤,你应该能够制作出一个逼真的皮肤效果。
然而,要想达到更高级别的逼真效果,还需要花费更多的时间和精力来对模型进行微调和渲染。
在制作逼真皮肤效果的过程中,创造力和耐心是非常重要的。
通过不断的尝试和实践,你将能够掌握Blender中制作逼真皮肤材质的技巧,并创建出令人惊叹的作品。
总结起来,利用Blender制作逼真的皮肤材质效果需要注意模型的拓扑结构、材质的设置、节点的运用以及纹理和特效的添加等。
通过不断的学习和实践,你将能够掌握这些技术,并创作出令人震撼的皮肤效果。
PS制作Flex皮肤

PS制作Flex皮肤本文主要介绍了如何通过使用Photoshop CS4创建Adobe的Flex应用程序的外观CS3。
同样的,如果你比较熟悉Adobe Flash, Adobe Illustrator, and Adobe Fireworks 这些adobe 公司的开发工具,一样可以利用这些工具的插件开发flex应用程序的皮肤。
这里重点讲解一Acrobat 文档个ps 的用法。
更多资料请参阅首先我们讲解下皮肤的定义。
关于皮肤Skining通过修改或替换的可视元素的过程中,改变一个组件的外观。
这些元素可以由位图图像、SWF文件或包含绘图方法定义的类文件或矢量图像。
皮肤可以为在各种状态下的组件定义的整个外观,或只有一部分的外观。
例如,Button控件有8个可能的状态,和8个相关的皮肤属性,如下面的示例:默认外观的up,over和down状态显示如下:A. upB. overC. down其他控件也有类似的状态与相关的皮肤。
例如,RadioButton是Button的子类,也有up,over和down skins。
ComboBox控件定义皮肤时,它的外观的控制是disabled, down, and over。
皮肤类型我们通常会定义一个皮肤位图图形或为矢量图形。
位图图形的缺点是,它通常是定义特定的分辨率,如果您修改图像缩放或转化的,你可能会注意到一个退化图像质量。
一个矢量图形,由一组线的定义指定的起点和终点的一条线,它的厚度、颜色,以及其他信息需要由Flash Player划清界线。
当一个矢量图形缩放,旋转,或修改在一些其他的方式,它是相对简单计算为Flash Player新的布局,矢量图形转换线定义。
因此,您可以执行多种类型的矢量图形的修改却没有任何质量退化。
程序化的皮肤的一大优势是,你可以用程序代码创建矢量图形。
例如,您可以开发程序化的皮肤Flex的创作环境或任何文本编辑器,而不使用图形工具,flash倾向于使用更少的内存,因为它们不包含任何外部图像文件。
简单皮肤制作

一、文字DOCK皮肤今天要教大家的是上图的简单文字DOCK!!SHOWTIME! PRESENT!首先介绍这个简单文字DOCK皮肤的组成请仔细分析,本皮肤由两个元素构成,1是背景图片(背后那个透明的条,那是一张PNG格式的图片)2是DOCK文字因此在皮肤代码中我们需要用到两种节点,分别是图片节点和文字节点。
顺便说一句,节点就是你点开编辑皮肤之后那些[....]方框里的东西,一个方框也就是一个节点。
本DOCK看上去有一个图片节点,和六个文字节点。
怎么写代码来表达呢?我们先不管它。
先教你们建立自己的皮肤文件夹:1.进入Rainmeter皮肤文件夹也就是Skin大概在这个位置,里面有你自己的皮肤,现在你在这里新建一个文件夹,叫做文字DOCK 教学,然后点进去。
我在里面放了一个叫做“玻璃白条5细.PNG”的图片素材,也就是我们用作背景的玩意儿。
新建一个记事本命名为“文字dock教学.ini”。
注意,后缀一定要改成ini,不能直接用txt后缀!!!2.点开你的ini,开始敲代码第一行写上[Rainmeter]第二行写上Update=1000第三行写上;作者=000第四行写上[Variable]为啥这么写?你怎么问这么多!!!反正你先这么写就对了!解释下为啥这么写,这几句代码雷打不动,必须写上去,事实上可以不写但是为了规范,不写的都拉出去宫刑!下面给解释,我的解释非常不专业,但有用。
[Rainmeter]这个节点应该是总管节点,反正就是屌,必须写后面的Update是总刷新率,1000表示1000毫秒,也就是1秒,表示你的雨滴每隔1秒更新一次数据,不要问是什么数据因为我也不知道。
你可以自己设定你的刷新率。
;作者=000这句话表示作者的名字,事实上雨滴里有个AUTHER还是什么的来直接表示作者,拼不出来,我就用中文了。
请注意:本行为无效代码,因此请在前面加上;加上;的意思就是表示这句话不是代码,雨滴你别看!!!最后一行[Variable]很重要!这是你写进阶皮肤所必须的,这一行叫做变量你现在的皮肤用到的元素非常少,不需要用变量。
RM-4-RM皮肤制作入门

Rainmeter皮肤制作入门皮肤编写须知所有皮肤都放置在皮肤文件夹中。
所有的皮肤文件都必须放在skins文件夹的子文件夹下面,而且你可以建立多层子文件夹。
实际的皮肤文件是一个普通的.ini文件,利用几个节点定义了皮肤的布局和一些值。
一个皮肤的文件夹可能包含几个.ini文件,但每个文件夹只有一个.ini文件可以处在活动的状态,我们称一个皮肤的所在的文件夹的名称为这个皮肤的config(配置),所有的皮肤文件只是配置下面的一个个皮肤而已,你可以这么理解每一个配置是一个有特定功能的软件,这个软件下面可以选择皮肤来表现自己。
皮肤即.ini文件,它被分为几个部分。
所有的一般性设置会放在[rainmeter]部分,详细信息将被放入[Metadata]节点,变量放在[variables]节点下面。
然后剩下的measure(用来收集检测数据的)和meter(用来显示数据的)。
上面的所有的节点的顺序可以自己随意编写,没有固定的约束,但是通常来说大致编写皮肤的顺序是[rainmeter]->[metadata]->[variables]->[measure]->[meter]注意的一点是:meter编写的顺序是十分重要的, 编写顺序是按照从上到下,meter显示从里到外(也就是说呢,如果两个meter坐标相同,那么代码在下方的meter会覆盖代码比较靠上的meter),还有meter和measure的名称是可以自己定义的.另外说明一点的是[rainmeter]节点以及[metadata]和[variables],[measure]节点都可以不写.一个皮肤可以只有一个[meter]节点.[rainmeter]节点简要说明这个节点定义了整个皮肤操作范围内的选项(简而言之就是在整个当前皮肤中起作用,相当于全局的设定)改变图片遵循下面的步骤: imagecrop -> greyscale ->imagetint ->imageflip ->imagerotate. Background设定meter的背景图片的名称Backgroundmode定义了背景样式,可识别的值如下:0-定义背景图片1-透明的(这个是默认的,如果没有定义背景图片的话)2-纯色(定义这个之后默认是淡淡的灰色,你可以定义solidcolor来改变背景色) 3-缩放的背景图片(一个皮肤的背景相当于一个舞台或者一个画布,你要把这个同在meter里面定义的图片区分开来,在rm里面背景区域是不能人工的在[rainmeter]节点下面定义宽和高的,它的大小随着下面定义的meter的大小而变,那么这里所谓的缩放背景图片随着也会下面的meter显示的区域而改变大小) 4-平铺背景图片Solidcolor当backgroundmode=2的时候,用来定义背景颜色.Update为meter和measure设定了更新周期,单位是毫秒,默认是1000就是1秒,设定为-1的话那么就不会更新皮肤了,那么它只有在皮肤加载或者皮肤刷新的时候才会更新.Meter类型节点简要说明Meters在Rainmeter里面的作用是告诉它如何显示信息用的一系列节点的统称,每个节点的名称都必须是独一无二的,而且必须用”[“和”]”括起来.只要没有空格它不介意你怎么定义meter的名称,而且除了meter节点所在的ini文件之外的文件这些meter将不起作用。
我的世界皮肤操作方法

我的世界皮肤操作方法
操作"我的世界"的皮肤需要经过以下步骤:
1. 打开"我的世界"游戏。
2. 在主菜单界面上选择"皮肤"选项。
3. 这将带您到皮肤选择界面。
4. 选择一个皮肤模板,如"经典"或"自定义"。
5. 如果选择"经典"模板,您可以选择一个预先设计好的皮肤。
6. 如果选择"自定义"模板,您可以自己设计和编辑皮肤。
7. 在编辑界面上,您可以选择头发、面部特征、身体服装等不同部分,以及选择颜色和纹理。
8. 点击每个部分来调整其外观。
9. 在编辑完皮肤后,点击保存按钮。
10. 返回到主菜单界面,您将看到您选择或自定义的皮肤已经生效。
请注意,您可能需要购买"我的世界"的皮肤包或使用特定的游戏版本才能使用皮肤功能。
此外,一些特定游戏平台或版本可能会有额外的操作步骤或限制。
最好根据您使用的"我的世界"版本和平台查找相应的详细操作指南。
逼真的皮肤效果制作指南 Blender皮肤材质和次表面散射技术

逼真的皮肤效果制作指南:Blender皮肤材质和次表面散射技术在数字艺术领域中,逼真的皮肤效果对于人物角色的真实感至关重要。
为此,在Blender软件中,我们可以利用皮肤材质和次表面散射技术来实现令人惊叹的皮肤效果。
本文将为您介绍Blender中如何制作逼真的皮肤材质和运用次表面散射技术的技巧。
1. 皮肤材质的创建首先,在Blender中创建一个新的材质。
选择一个适合的节点类型,例如Principled BSDF节点。
这个节点将帮助我们控制皮肤表面的不同属性。
2. 肤色调整从基础材质开始,我们需要选取一个适合的肤色。
通过调节RGB 值,我们可以实现不同肤色的效果。
此外,通过在节点设置中选择正确的色彩空间,也可以增强肤色的真实感。
3. 表面细节添加现在,我们可以通过添加节点来制作皮肤表面的细节。
使用天然纹理节点或者噪音节点可以为肤色增加细微变化,使皮肤看起来更加真实。
调整节点的细节参数,例如颜色、几何细节和变化密度,以达到所需的效果。
4. 微表面反射调整现实世界中的皮肤通常具有微细的反射。
为了模拟这个效果,在材质节点中添加微表面反射。
通过调整反射的强度、粗糙度和颜色,可以使皮肤看起来更加光滑,增加真实感。
5. 添加次表面散射效果最重要的一步是利用次表面散射技术,实现皮肤在不同光照条件下的传递效果。
在材质节点中,添加一个SSS (Subsurface Scattering)节点。
根据皮肤类型和色调,调整散射节点的参数,例如颜色、强度和半径。
通过改变这些参数,可以模拟不同皮肤类型和特征的效果。
6. 照明设置完成皮肤材质的调整后,为了获得逼真的效果,合适的照明设置是必不可少的。
在Blender中,您可以使用不同类型的灯光,如点光源、聚光灯和环境光等。
通过调整灯光的强度、颜色和位置,您可以获得不同的皮肤表现效果。
7. 渲染和后期处理最后,在Blender中进行渲染,并进行后期处理以提高图像的质量。
您可以使用不同的渲染引擎和设置来获得最佳结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教你怎样用SkinMagicBuilder制作皮肤椐我所知,设计软件皮肤好像从来不是程序员擅长干的工作。
不过我也调查过,很多程序员朋友对皮肤的制作还是满有兴趣的。
在这个部分,我专门用我制作的一个软件皮肤为例,从头到尾的给你讲解一遍。
其中包括皮肤的画法,皮肤的定制和皮肤的嵌入。
如果你有兴趣,那么就跟着我来做一个皮肤试试吧!工预善其事,必先利其器。
我们先谈谈制作皮肤需要的工具吧。
首先我使用的编程语言是VC++,所以皮肤的嵌入软件,自然也选定是专门制作给VC++的了。
我使用的这个软件叫做SkinMagic,有很多朋友通过各种途径得到过这个软件。
不过这个软件是个共享软件,而且每一个注册码对应一个软件皮肤,收费高达89美元(我曾经买过几个,吐血!),但是确实非常好使。
其实就我所知,很多共享软件的作者都使用这个软件(而且也曾经跟我一样吐过血~)。
用它作为皮肤的嵌入软件的原因当然是非常地容易制作啦。
(现在已经有破解版本了)有了这个工具之后我们还要面有PhotoShop(以下简称PS)来进行皮肤主体的勾画。
我还要说的是颜色搭配。
在这个例子中,因为我很喜欢橙色,所以自然选择橙色作为主体颜色,那么什么颜色能和橙色放在一起比较漂亮?这是问题的关键,我很幸运,著名的NIKE公司的LOGO为我很好的解释了这个原理。
不难看出灰色,黑色,还有白色都是和橙色很好的搭配在一起,所以我们就选择这几个颜色作为皮肤的制作颜色!好了,开始实战!第一步,轮廓与着色首先,打开你的PS,新建一个文件,宽度为495,高度为406,分辨率为72。
然后点击图层菜单,新建图层背景。
接着在工具栏里点击油漆桶工具,选择颜色为R=255,B=0,G=255。
用油漆桶工具填充背景。
我们这样做的目的是填充一个固定的背景色,你看过电影的特技拍摄吧,后面放了一幅大蓝布,然后演员在那里摆POSE,最后再用电脑合成。
一个道理,我们也是这样,只不过我们放的是一块大粉布,哈哈。
下面,我们要绘制一个窗体。
在工具栏里点住矩形工具,会看到出现一个下拉菜单,选择圆角矩形工具。
在大粉布上画上这个圆角矩形。
取名就叫默认的形状1。
再次使用圆角矩形工具,在刚才的矩形前画一个小一点的矩形,这次我们要拖动鼠标的同时按住减号,然后你会发现我们得到一个窗口外框子。
接着,我们点击图层窗口,右键选择“形状1”,点选“混和选项”,分别在“斜面和浮雕”,“颜色叠加”,和“描边”上打勾。
其中“斜面和浮雕”的参数“大小”为21,“软化”为10。
“颜色叠加”的颜色为:R=241, G=112,B=18;“描边”的颜色和刚才的一样,“大小”为1,于是,得到了我们要的窗口外框!接下来我们选择工具栏的矩形工具(这次不是圆角矩形了!)画一个长方形,这个长方形要比外框小,比内框大。
并将新建的这个图层拖到咱们刚才的圆角矩形的下面,取名也就叫“形状2”。
还用上面提到的方法,打开“形状2”的“混和选项”,在“内阴影”和“颜色叠加”上打勾。
其中“内阴影”的参数“距离”为16,“大小”为5,而“颜色叠加” 的颜色为R=102,G=102,B=102,你瞧我们的窗口做好了!好了,把它保存为Orange.psd,然后再转化成BMP格式,我们的窗口皮肤素材就已经做好了!嘿嘿。
第二步,制作SkinMagic格式皮肤!首先,按我刚才说的,到刚才那个网址链接去下载一个SkinMagic,然后解压到你的电脑里。
我们使用的是一个叫做“SkinMagicBuilder”的工具软件。
它在解压后的SkinMagic的SkinMagicBuilder目录下,是个可执行文件。
打开这个工具软件后,我们在Object 菜单里选择“Load Image”把刚才存的那个BMP文件装载进来。
下一步,我们要把这个窗口做活,所谓“做活”就是使这个皮肤能用于任何窗口。
这个过程可能有点麻烦。
还是点击Object 菜单,选择“Window”的“Frame Window”。
在SkinMagic的右侧属性框,把Name改为“Dialog”。
然后我们注意到右边的Act iveFrame下有九个属性,翻译成中文他们是“左上方,中上方,右上方,左边,中间,右边,左下方,中下方,右下方”。
我们先点击“TopLeft”,在Image Files里选择我们的Orange.bmp。
然后你看到,我们画的窗口已经在这个窗口里了。
最后你在中间大窗口的左上方看到有一个可以拉动的红点,把它拉开,覆盖在我们的窗口图片的左上方。
接下来我们按照和刚才同样的方法,把其他八个部分都做好,具体的各个方面参数你可见下表所示。
填好之后,在Tools菜单里选择“Test”可以测试你制作的皮肤的效果。
一个非常非常简单的窗口皮肤已经制作好了。
我们把这个文件起名为orange.smf 保存起来。
第三步,在VC++中使用皮肤首先我想声明,并不是非要有SkinMagic VC才能添加皮肤,本身VC就有皮肤的调用函数的,比如每一个控件都有一个相关消息映射叫做“DrawItem”,在这里可以对指定的控件装上皮肤。
只不过这是非常麻烦的过程,我不推荐。
但是如果没有更好的办法,那样也是可以的。
比如当你只想给某个按钮加上个皮肤的时候,倒是可以考虑。
其他情况下,我们最好采用第三方工具。
好了,言归正传。
我们继续皮肤制作的最后一步,我们先在VC里按照MFC AppWizard建立一个基于Dialog的应用程序,取名为Sample。
完全按照向导的默认值就可以了。
接着我们把刚才保存好的Orange.smf以资源的方式添加到项目中去,资源类型写:“SKIN”,资源名称为:“IDR_SKIN”,注意写的时候一定要加上双引号哦!然后我们再到那个SkinMagic包里拷贝些东西,他们分别是:SkinMagicLib.h、SkinMagicLib.lib、DETOURS.lib把这三个文件拷贝到你的Sample应用程序的路径下,然后再在VC的Project目录下选择“Add To Project” 菜单的“Files...”。
把这三个文件添加到工程中。
下一步,我们打开Stdafx.h文件,在里面添加上一句:#include "SkinMagicLib.h"接着,在CSampleApp 类里添加一个函数,取名为“InitSkin”。
在函数里写入:void CSampleApp::InitSkin(){//加载皮肤VERIFY(1==InitSkinMagicLib(AfxGetInstanceHandle(), "Sample", NULL,NULL ) );VERIFY (1==LoadSkinFromResource (AfxGetInstanceHandle() , "IDR_SKIN" ,"SKIN") );VERIFY( 1 == SetDialogSkin( "Dialog" ) );}最后在CSampleApp类的InitInstance函数里添加上:InitSkin();按Ctrl+F5,你瞧,皮肤上上去了!哈哈,厉害了你!并不是很难吧。
上面我们做的只不过是最简单最简单的上肤了。
其实,仔细想想:按钮,菜单,文本框,标签,菜单,Combo等等一大堆的控件都需要上肤的。
不过SkinMagic 倒是都提供了,我们的做法也和上窗口皮肤大同小异,这里我就不再多说废话了。
凭我的经验来讲,一般制作一个完整的皮肤,从PS描绘(有时还需要CorelDraw 画)到最后皮肤放到窗口上大约需要3天吧,主要的问题就是要选好搭配的颜色。
如果你说你一点美术灵感都没有,那我请你和我一样,找一个非常不错的广告图研究研究;如果你还说一点灵感也没有找到,那只能说明你实在懒得可以。
对原作者内容进行了改动,为了方便学习,我这是收录其中的精华如何使用:①下载SkinMagic的开发包,我用的开发包需要下面几样东西:SkinMagicLib.lib,DETOURS.lib两个库文件;.smf文件(皮肤文件);还有个SKinMagicLib.h文件;这些就足够了(SkinMagicLib.lib 1199kB 的据说经处理不会显示[Powered by SkinMagic],但我这里用着会产生问题,不得已还是用了998kB的)②新建工程后,将SkinMagic包中的SkinMagicLib.h、SkinMagicLib.lib、DETOURS.lib拷贝到所在文件夹下,点击Project->Add To Project->Files,包含到工程中。
(SkinMagicLib.h、SkinMagicLib.lib 可以直接放在工程文件中,DETOURS.lib和.smf皮肤文件可以放在res文件夹中)③在Resource View中点击Import 菜单引入几个Skin二进制文件放在相同的“SKINMAGIC”文件夹下,分别给起一个名字(见源程序)。
(4) 在stdafx.h中加入#include "SkinMagicLib.h"#include <afxcmn.h> // MFC support for Windows Common Controls#endif // _AFX_NO_AFXCMN_SUPPORT#include "SkinMagicLib.h"//{{AFX_INSERT_LOCATION}}(5)打开以你工程名字命名的CPP文件,在里面的InitInstance()函数里,单文档在 if (!ProcessShellCommand(cmdInfo)) return FALSE;这一句的后面加上更换皮肤的关键代码:/***********************换肤代码*********************************/VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), NULL , NULL, NULL ) ); //初始化类库VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() ,"KROMO" ,"SKINMAGIC") );//从资源中加载皮肤VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" )); //对话框这句可不也可以放着 VERIFY( 1 == SetDialogSkin( "Dialog" ) );//m_pMainWnd->ShowWindow(SW_SHOW);//m_pMainWnd->UpdateWindow();/**************************************************************/其中,第二句的作用是更换皮肤资源;(本来还有另外一种换肤的途径,直接从文件读取,不需要引导资源,更加简洁,但是这样子直接运行exe文件会出现问题,百思不得其解,只有舍弃)(5)让你的程序更进一步,在菜单栏中添加更换皮肤项目,只需要在它的相应函数中写入: VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle() , "KROMO" ,"SKINMAGIC"),就可以实现换肤的功能了,当然这里"IDR_Devior"需要换成你想更换皮肤资源的ID;(6)我在实际运行的时候发现了一个问题,编译时只能选择MFC共享的DLL,如果用动态的库链接则会出现问题,好像是说库与库之间命名冲突之类,可能是SkinMagicLib库的问题,我找了很多SkinMagicLib 的库,试了很多遍都没有办法解决,只有在编译时注意一下,选择MFC共享的DLL;(7)在MainFrame中加入换皮肤菜单,及相应的函数,在函数中加载皮肤。