有趣的问题(第一个回答完整得分200)

czq 2000-08-07 06:59:00
怎么样做类似于winamp的skin (皮肤)
200 分可不是白给得哟
要求
1:编程思想
2:小小demo 或者(哪有这方面的资料 源代码软件)
3: delphi 或者 vc++
...全文
709 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
czq 2000-09-29
  • 打赏
  • 举报
回复
flyby 你好 请给我一份
flyby 2000-09-26
  • 打赏
  • 举报
回复
我做了一个,而且是透明的!
要不要我Email给你(delphi做的)?
tibetty 2000-08-23
  • 打赏
  • 举报
回复
应该比较简单吧,有没有做过全自画的按钮之类的东东,SKIN不过是把自画的位图变成可以定制的而已。
Erlin 2000-08-23
  • 打赏
  • 举报
回复
关注
hotbaby 2000-08-23
  • 打赏
  • 举报
回复
用ActiveSkin又快又好
zboat 2000-08-23
  • 打赏
  • 举报
回复
看源码吧!!
zboat 2000-08-23
  • 打赏
  • 举报
回复
我看软件换皮肤问题
目前,据我个人了解软件换皮肤有两种方案:
1、就是上面大家所说读写ini文件,换换图啊文字啊之类,只要明白不规则窗口和事件处理,努力一下不难实现,注意不止Windows下可以实现,其他平台也可以实现(只要能画图)。这种方法实现的换肤往往换来换去还是象一个模子出来的,怎么实现皮肤的自由更换呢?第二种方法可行。
2、这第二种方法就一种软件插件技术,这种技术不但可以用于界面更换还可以更换软件的内部模块。说明起来有点麻烦,最核心的是软件内部维护一个自己事件队列,象Windows一样,软件核心负责自己的事件分发,界面部分只是Event target而已。界面针对核心发来的命令或状态信息来改变。大家想一想一个操作系统可以有不同的Shell部分就明白了。
我这有这两种方案的资料,要想用于商业软件还要做许多工作,大家谁需要和我联系。
dandycheung 2000-08-23
  • 打赏
  • 举报
回复
也可以给我发邮件。
dandycheung 2000-08-23
  • 打赏
  • 举报
回复
这个问题其实也不是很难。
1、要解决位图->区域->窗口形状的转换,这是最主要的界面上的不规则按钮之类的东西,都可以用它来实现。用C+Win32 API写成的原码可以在dandy.163.net上找到。

2、制定良好的界面配置文件规则。一般要保存位置信息,功能关联,相关图片等信息

3、编程从配置文件中读出所需信息,主要跟踪鼠标的状态及动作。
其他我一下子也想不周全了,容后再叙吧。
flyby 2000-08-17
  • 打赏
  • 举报
回复
关注
华南虎哥 2000-08-13
  • 打赏
  • 举报
回复
兴趣问题,极度关注
  • 打赏
  • 举报
回复
你可也是把图片放在一个目录中第次LOAD窗体的时候先把图片显示出现不就行了吗?
而且还可以像winamp 一样多SKINS的
shines77 2000-08-11
  • 打赏
  • 举报
回复
这个问题我可以回答,关注。
Wingsun 2000-08-09
  • 打赏
  • 举报
回复
要说的东西比较多,而且比较难得说清楚他的原理。反正是从一个配置文件中读取到SKin的信息,然后,根据这些信息生成相应的菜单、按钮等控件,形成一个新的界面。有一个例子你可以看一看,用VC写的.到如下地址去看一看:http://www.codetools.com/dialog/skinsyse/skinsyse.zip
spring 2000-08-09
  • 打赏
  • 举报
回复
转载自:http://www6.163.com/news/p-item/0,1587,it_5529_it,00.html

  首先,在窗体上放一个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.

  你还可以在此基础上继续向窗体上添加各种控件。因为这只是一个示例,所以就没有加那些。另外,严格得说,“换肤”指令应该在菜单中(即MainMenu控件中,其实也很简单)。

czq 2000-08-08
  • 打赏
  • 举报
回复
!!1
czq 2000-08-08
  • 打赏
  • 举报
回复
完了 完了 我还要交差!!
各位大虾们 发发慈悲吧! 要不提示一下!!!
czq 2000-08-08
  • 打赏
  • 举报
回复
这么过隐的东西 没人回答!!

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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