换肤123 – 只想为你长得更美丽~~

应用程序要想长得好看,除了布局合理,还需要好的皮肤。就象一个美女,如果空有一副好身材,但是皮肤不好,全是麻点大包,观感也不会好到那里去。

早期的应用程序的换肤大法,主要由第三方控件来解决,出名的有 VCLSkin、AlphaControls 等等。但新版的 Delphi 直接内置了美容换肤大法,VCL 应用程序是 VCLStyle,FMX的应用程序称之为 FMXStyle。

首先我们了解下如何使用皮肤:

1、VCL 应用程序

  • 进入 Project -> Options -> Application -> Appearance ,然后选择要启用的皮肤列表,并在 Default Style 下拉列表中选择一个做为默认的皮肤,然后直接运行程序,程序就会换成指定的皮肤。

vclStyle_01

  •  要在运行时更换皮肤,则需要引用单元文件 Vcl.Themes,然后利用函数 TStyleManager 的相关函数和属性来完成换肤。
    • 通过 TStyleManager.StyleNames 属性数组可以枚举所有已经注册的皮肤名称;
    • 通过 TStyleManager.SetStyle 函数可以设置一个选中的样式;
    • TStyleManager 的各个属性和方法都是类方法,所以不需要创建 TStyleManager 的实例即可使用;
    • TStyleManager 同样提供了从文件或资源中加载皮肤的方法,不过从流中加载皮肤的方法却没有提供(内部使用了内存流加载,但没公开类似的方法)。

一段参考代码:

//切换为选中的皮肤
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
TStyleManager.SetStyle(ComboBox1.Text);
end;
//获取已注册的皮肤列表
procedure TForm2.FormCreate(Sender: TObject);
var
  I:Integer;
begin
for I := 0 to High(TStyleManager.StyleNames) do
  ComboBox1.Items.Add(TStyleManager.StyleNames[I]);
end;

2、FMX 应用程序

FMX 应用程序目前还享受不到 VCL 程序的这般待遇,它需要你在窗体上放置一个 TStyleBook 控件,然后设置窗体的StyleBook 为相应的控件即可。至于换肤可以真接从文件或资源中加载,这个可以参考以前写的一篇文章:[FMX] 换肤术 – 使用 TStyleBook 动态加载皮肤样式

那么换妆都基本了解了,那么这些化妆品从那里来呢,一些是系统自带的,它位于安装目录的 Redist\styles 里。如果想要自己修改皮肤,可以用 Tools -> Bitmap Style Designer 来修改,如果直接在其中编辑修改不方便,那么自己导出 Images 下的图片,然后在 Photoshop 编辑修改后再导入到原来的皮肤中另存下就OK了。FMX的皮肤设计,使用上文中的 FMX Style Designer 设计当然是不二的选择,而且 XE8 的 FMX Style  Designer 的稳定性比 XE7 稳定多了,没有那么坑爹了。

 

分享到: