怎样用delphi实现skin技术?

netsong 2000-08-31 03:06:00
...全文
485 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
musicmate 2000-12-10
  • 打赏
  • 举报
回复
算了
我来说几句
用coolform动态生成form和button就可以实现skin
如果是winamp,有现成控件
我修改的版本马上就会出现在我的站点
示范程序
http://musicmate.myetang.com/
lumg_2000 2000-09-13
  • 打赏
  • 举报
回复
我这儿有一篇文章关于delphi换肤的文章:
首先,在窗体上放一个Image控件,一个Button控件和一个OpenDialog控件。
  然后,修改属性。将窗体的Caption属性改为Test Skin Program;将Image控件的Align属性改为alClient,将Stretch属性改为True;将Button控件的Caption属性改为Skin。其余属性不变。
 最后,输入代码吧!
  unit mainform;
  interface
  uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls,inifiles, jpeg, Menus;
  //一定要将inifiles单元加入uses
  type
  TForm1 = class(TForm)
  Image1: TImage;

  OpenDialog1: TOpenDialog;

  Button1: TButton;

  procedure FormCreate(Sender: TObject);

  procedure Button1Click(Sender: TObject);

  private

  { Private declarations }

  public

  { Public declarations }

  end;

  var

  Form1: TForm1;

  implementation

  {$R*.DFM}

  procedure TForm1.FormCreate(Sender: TObject);

  Var

  SkinINI : Tinifile;

  SkinPicture : String;

  begin

  SkinINI := TiniFile.Create('c:\my documents\skin.ini');

  SkinPicture:=SkinINI.ReadString('Interface','skin','');

  //将“皮肤”的图片信息存储在SKIN.INI文件中。当然,你还可以将更多的信息存进该文件中。

  //例如:SKIN.INI

  //[interface]

  // skin = c:\my documents\mylove.jpg

  IF SkinPicture<>'' then

  Begin

  try

  Image1.Picture.LoadFromFile(SkinPicture);

  except

  end;

  End;

  SkinINI.Free;

  end;

  procedure TForm1.Button1Click(Sender: TObject);

  Var

  SkinINI : Tinifile;

  SkinPicture : String;

  Success : Boolean; //指示换肤是否成功

  begin

  SkinINI := TiniFile.Create('c:\my documents\skin.ini');

  SkinPicture:=SkinINI.ReadString('Interface','skin','');

  OpenDialog1.Filter:='All Image File(*.jpg;*.jpeg;*.bmp;*.ico)|*.jpg;*.jpeg;*.bmp;*.ico|'+

  'Bitmaps(*.bmp)|*.bmp|'+

  'Jpeg Image File(*.jpg;*.jpeg)|*.jpeg;*.jpg|'+

  'Icons(*.ico)|*.ico';

  Success:=True;

  IF OpenDialog1.Execute then

  Begin

  try

  Image1.Picture.LoadFromFile(OpenDialog1.Filename);

  except

  Application.MessageBox('This file is not load!','Error!',MB_OK);

  Success:=False;

  end;

  IF Success then SkinINI.WriteString('interface','skin',OpenDialog1.Filename);

  //若换肤成功,将图片信息存进skin.ini文件中

  End;

  SkinINI.Free;

  end;

  end.

  
netsong 2000-09-12
  • 打赏
  • 举报
回复
不好意思,几天没来。:)
alin 2000-09-04
  • 打赏
  • 举报
回复
就跟PoolD说的那样,像WINAMP就是那样做的,不过要复杂一点,要将图片的事件与位置关联起来,更复杂的如一些特别的MP3播放器,像手机模样的,像圆盘样的等等,就要特殊处理了,我给你的控件就能处理.我的主页在http://alin.heha.net,应该猜得到的吧^_^
netsong 2000-09-04
  • 打赏
  • 举报
回复
我真笨,呵呵,看到了
netsong 2000-09-02
  • 打赏
  • 举报
回复
to alin: 你的网址在哪?
alin 2000-09-01
  • 打赏
  • 举报
回复
又错了,SORRY,http://alin.heha.net/mydown/component/coolformd5.zip
alin 2000-09-01
  • 打赏
  • 举报
回复
错了,应是http://alin.heha.net/moydown/component/coolformd5.zip
alin 2000-09-01
  • 打赏
  • 举报
回复
用这个控件可以完成http://alin.heha.net/moydown/component/collformd5.zip
alin 2000-09-01
  • 打赏
  • 举报
回复
有源码呢
另:Windows 有个函数,是专门对不规则窗体的,SKIN只是一种很简单的方法,我的主页上有一个我写的程序,你可以看看,很简单,像WINAMP那样就太简单了,它是规则的窗体.要想做出好的来,如中间是透明的,且鼠标可以在其中点后面的东西,这就要用到掩码图形等,我给你的控件就很好地解决了,源码很容易看懂的
PoolD 2000-09-01
  • 打赏
  • 举报
回复
以form背景为例:
启动时查找指定文件名的bmp文件,如果存在且尺寸等正确的话,则读入并绘于form的Canvas上。
其它的(按钮、文字)也是一样的。
netsong 2000-09-01
  • 打赏
  • 举报
回复
我想听听原理和实现方法,只用控件怎么进步呀!
这么多分呐!
yinfudan 2000-08-31
  • 打赏
  • 举报
回复
I will give you my source code on this Saturdat!!!
Please wait and give me your points.
51go 2000-08-31
  • 打赏
  • 举报
回复
i expect u can get its key...sorry..i donot know about it...

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧