用CB制作具有HTML风格的动态按钮

小楠服装旗舰店

小楠服装旗舰店

2016-02-19 16:33

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享用CB制作具有HTML风格的动态按钮的教程,热爱PS的朋友们快点看过来吧!

  在浏览网页时,各种各样制作精美的动态按钮常常令人惊羡不已。这种按钮平常默默无闻,当鼠标经过时,立即一跃而出,在鼠标变为手形的同时,图形也变得更加亮丽,有的还发出特有声音,将你的注意力瞬间抓了过去;而当鼠标移开之后,一切又恢复原样,以免分散你对新焦点的注意。如果我们能用C++ Builder实现这种效果,那么一定会给所开发的应用程序增色不少。

  在C++Builder中,适合制作动态按钮的构件是SpeedButton。虽然SpeedButton可以通过1个16×64像素的位图来显示按钮处在抬起、禁止、按下与保持按下的不同状态,但要实现HTML风格的按钮,还得要通过编程来实现。

  选择1副所钟意的位图取名为start.bmp。用图形制作软件(如photoshop)将其转换为黑白图形存为start1.bmp。这2个位图分别是按钮在鼠标经过时及平时显示的图形。同时还选取1个声音文件(不要太长),假设其名为crush.wav。

  打开纯文本编辑软件(如notepad),输入以下内容:

  crush WAV crush.wav

  start BITMAP start.bmp

  start1 BITMAP start1.bmp

  保存为资源文件mysrc.rc。

  启动Builder,打开新工程,将资源文件mysrc.rc添加进项目中。你也可以通过BIN目录下的brcc32.exe将RC文件编绎为RES文件,然后用 #program resource "*.res" 语句将其联编进项目中。本文采用更简单的前一种方法。

  在当前窗体上加入新的SpeedButton,取名为StartSpeedButton。属性按下表设置:

  Caption 空

  Cursor crHandPoint

  Flat true

  Hint 单击以..

  Glyph None

  Showhint true

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  注意:在设计阶段,按钮的Glyph属性最好不要先行指定为start1.bmp。

  打开所对应的头文件,在其中的private项中增加

  Graphics::TBitmap *start,*start1;//定义位图

  Char *chWavHandle;//定义声音句柄

  在主表单的CPP文件的表单创键事件(onCreate)所对应的函数中先初始化位图,

  start=new Graphics::TBitmap();

  start1=new Graphics::TBitmap();

  初始化后再载入位图

  start-Handle=LoadBitmap(Hinstance, "start");//从内存中载入位图

  start1-Handle=LoadBitmap(Hinstance, "start1");

  载入声音文件

  HRSRC temp=FindResource(Hinstance,"crush", "WAV");//从内存中载入声音

  HGLOBAL h=LoadResource(Hinstance,temp);

  ChWavHandle=(char *)LockResource(h);

  先在浮动按钮上显示普通的黑白图形

  StartSpeedButton-Glyph-Assign(start1);

  在初始工作完成后,好的习惯应及时释放所占用的资源。在主表单的OnDestroy事件所对应的函数中加入

  delete chWavHandle;

  delete start1,start;

  至此,第一步已经结束,试着运行一下,鼠标形状变化、按钮突起及动态提示已经有了,最后再让我们来完成图形变化及声音提示。

  在做这部分工作之前,可回想一下浏览网页的情况。我们的动态按钮的响应步骤应该是:鼠标移入按钮时,图形由黑白变为彩色,同时发出声响(以后称之为点亮按钮);移出时图形再变回黑白,但此时不发出声响。因此应让程序知道什么时候鼠标正好移入、什么时候正好移出。

  在头文件的private项中增加状态变量

  bool blStart;

  在主表单文件的OnCreate中为其设置初始值

  blStart=true;//在TRUE状态下,一旦发生OnMouseMove事件就可以点亮按钮

  选中SpeedButton按钮,在其OnMouseMove事件所对应的函数StartSpeedButtonMouseMove()中增加

  if(blStart)//可以点亮按钮

  

 {
  StartSpeedButton-Glyph-Assign(start);//变为彩图
  // 通过chWavHandle句柄调用内存中声音文件
  SndPlaySound(chWavHandle,SND_MEMORY|SND_SYNC);
  blStart=false;// 再发生OnMouseMove事件不可以点亮按钮
  }

  当然,还必须在鼠标离开按钮时再将图形恢复为黑白。如何才能知道鼠标离开呢?比较原始的办法自然是用鼠标的坐标位置来判断,但这样很费力。一个巧妙的招数是用包含(在位置上)此按钮的其它部件的OnMouseMove事件来判断(注意:选用的外围部件相对于此按钮来说需有足够的纵深,否则,一旦鼠标移动太快,有可能会漏过OnMouseMove事件而发生紊乱。确决的办法是,再加上更外围的部件的OnMouseMove事件来双保险)。

  以按钮的外围部件是主表单MainForm为例,在其OnMouseMove事件所对应的函数MainFormMouseMove()中加入

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  if(!blStart)//鼠标正好由按钮内移出

  StartSpeedButton-Glyph-Assign(start1);// 图形恢复黑白

  blStart=true;//为鼠标重新进入按钮作准备

  最后在主表单CPP文件前部加入为SndPlaySound提供声明的头文件

  #include

  编绎运行,哈哈,一切正如所想的,我的按钮也具备了HTML风格,你还不赶紧行动。

  注:以上程序在 Builder 4.0/win98环境下运行通过。这里所说的主表单也可以是包含动态按钮的表单。

展开更多 50%)
分享

猜你喜欢

用CB制作具有HTML风格的动态按钮

编程语言 网络编程
用CB制作具有HTML风格的动态按钮

用VB制作即时动态按钮

编程语言 网络编程
用VB制作即时动态按钮

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用Dreamweaver CS3制作动态链接的Flash按钮

Web开发
用Dreamweaver CS3制作动态链接的Flash按钮

木头风格按钮的制作

PS PS基础 ps平面设计教程 ps去水印教程
木头风格按钮的制作

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用CB动态改变显示器分辨率

编程语言 网络编程
用CB动态改变显示器分辨率

PS制作水晶风格按钮

PS PS基础 ps平面设计教程 ps去水印教程
PS制作水晶风格按钮

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

3G时代的无线营销 如何才能做到无往不利

3G时代的无线营销 如何才能做到无往不利

五个为你的设计添加光影效果的简单技巧

五个为你的设计添加光影效果的简单技巧
下拉加载更多内容 ↓