用Delphi轻松实现软件换肤
软件世界
现在很多软件都提供换肤功能,它可以使你的应用程序更具个性化。我们用Delphi可以轻松实现这一功能。
编程思路
当程序form创建时,自动搜索c:\myprogram\default.bmp文件,如果存在,将它设为form界面。同时当单击“换肤”按钮时,打开一个BMP图像,然后通过函数改变form的canvas属性,从而实现换肤功能,并把这一BMP图像存为c:\myprogram\default.bmp。
编程过程
1.在Form1上加入三个Delphi控件,即Button1、Button2和OpenDialog1。如(图1)所示:

2.在Form1的FormPaint事件中加入以下代码,当Form1显示时,程序自动加载上次保存的软件“肤色”。
procedure TForm1.FormPaint(Sender: TObject);
var
aa:trect;
bb:tbitmap;
begin
aa.Left:=0;
aa.Right:=form1.Width;
aa.Top:=0;
aa.Bottom:=form1.Height;
if FileExists('c:\myprogram\default.bmp') then//判断c:\myprogra下是否存在default.bmp文件
begin
bb.LoadFromFile('c:\myprogram\default.bmp'); // 载入图片文件
form1.Canvas.StretchDraw(aa,bb); //把载入的图片设为窗体的底色
bb.FreeImage;
end;
end;
3.在Caption为“换肤”的按钮OnClick事件中加入以下代码,可以实现改变Form1的“肤色”,并将它保存,以备下次重新运行程序或重新显示Form1时调用:
procedure TForm1.Button1Click(Sender: TObject);
var
aa:trect;
bb:tbitmap;
begin
aa.Left:=0;//以下建立显示图片的区域
aa.Right=form1.Width;
aa.Top:=0;
aa.Bottom:=form1.Height;
bb:=tbitmap.Create;
opendialog1.Filter:='bitmap file(*.bmp)';//对打开图片类型的限制
if opendialog1.Execute then
begin
bb.LoadFromFile(opendialog1.filename); //导入图片文件
form1.Canvas.StretchDraw(aa,bb);//换肤
bb.SaveToFile('c:\myprogram\default.bmp');//保存图片文件到相应目录
bb.FreeImage;
end;
end;
以上是软件换肤操作方法,我们在设计应用软件时,可以先设定几种有代表性的界面,如“古典型”、“浪漫型”、“热情型”等,然后让使用者在其中选择,也可以让使用者自由选择图片,这样就可以使你编写的程序更加多姿多彩。
注:以上程序在Win2000、Delphi5下测试通过。