用Delphi轻松实现软件换肤

软件世界

现在很多软件都提供换肤功能,它可以使你的应用程序更具个性化。我们用Delphi可以轻松实现这一功能。

编程思路

当程序form创建时,自动搜索c:\myprogram\default.bmp文件,如果存在,将它设为form界面。同时当单击“换肤”按钮时,打开一个BMP图像,然后通过函数改变form的canvas属性,从而实现换肤功能,并把这一BMP图像存为c:\myprogram\default.bmp。

编程过程

1.在Form1上加入三个Delphi控件,即Button1、Button2和OpenDialog1。如(图1)所示:

图1
图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下测试通过。