在VB中制作图标按钮的四种方法.docx

上传人:b****3 文档编号:5059698 上传时间:2022-12-12 格式:DOCX 页数:8 大小:21.74KB
下载 相关 举报
在VB中制作图标按钮的四种方法.docx_第1页
第1页 / 共8页
在VB中制作图标按钮的四种方法.docx_第2页
第2页 / 共8页
在VB中制作图标按钮的四种方法.docx_第3页
第3页 / 共8页
在VB中制作图标按钮的四种方法.docx_第4页
第4页 / 共8页
在VB中制作图标按钮的四种方法.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

在VB中制作图标按钮的四种方法.docx

《在VB中制作图标按钮的四种方法.docx》由会员分享,可在线阅读,更多相关《在VB中制作图标按钮的四种方法.docx(8页珍藏版)》请在冰豆网上搜索。

在VB中制作图标按钮的四种方法.docx

在VB中制作图标按钮的四种方法

在VB中制作图标按钮的四种方法

2010-07-1917:

31

发信人:

huanghm(东方不败),信区:

Program

标题:

VB中图标按钮的制作

发信站:

深大荔园晨风站(TueJan1311:

11:

081998),转信

现在大多数Wndows应用程序的功能都比较丰富,相应的菜单结构也比较复杂。

一些操作命令往往要打开好几层菜单。

尤其是一些常用的操作命令,因其使用较频繁,即使仅打开一层菜单,从中选择一项也是比较麻烦的。

因此现在绝大多数Wndows应用程序中除了菜单之外,还配备了工具栏。

工具栏中有与常用菜单命令相对应的按钮,按这些按钮的效果和选择菜单命令的效果完全一样。

工具栏中的按钮和普通按钮不同的是,它们不用文本字符串,而是用图标来标明按钮的功能。

这种图标按钮的好处是省地方,菜单命令往往比较冗长,而工具栏提供的空间又十分有限。

使用图标按钮最大的好处还在于其直观形象性,这与Wndows图形用户界面(GUI)方便用户、简化操作的目标是一致的。

Windows系统提供的标准按钮(如OK、Cancel等)中只能显示文本

字符串。

在VisualBasic(以下简称为VB)中,按钮是使用工具箱中的命令按钮控件CommandButton来实现的。

CommandButton使用的是Windows系

统提供的标准按钮控件,因而无法装入图标。

下面介绍在VB中实现

图标按钮的几种方法。

一、使用标准控件实现图标按钮

VB的标准控件中,能够装入图形的只有Image(图像)

和PictureBox(图片框)两种。

Image的功能较简单,占用系统资源较

少。

PictureBox的功能很丰富,可以将它看作是Image的一个"超集”,

它占用的系统资源当然就要多一些。

为了利用可装入图形的控件模

拟图标按钮的功能,首先应比较一下它们各自所能够接收到的事

件(如表1所示)。

表1中打勾(V)的表示该控件提供了相应的事件驱动过程接口,

打叉(x)的则表示该控件没有提供,控件不接收相应的事件。

因为

是要模拟CommandBu11on的功能,所以Image和PictureBox的其它事件没有列岀。

CommandButton的事件ImagePictureBox

ClickVV

DragDropVV

KeyDownXV

KeyPressxV

KeyUpXV

LostFocusxV

MouseDownVV

MouseMoveVV

MouseUpVV

表1Image和PictureBox与CommandButton中相同的事件

从表1中可以看出,PictureBox具有CommandBu11on中所有事件的接

口,因而可以完全模拟CommandButton的功能。

CommandBu11on的某些事

件在Image中接收不到。

对于一般应用来说,我们往往只

对CommandButton的Click事件过程编程,因此Image也可以用于模

拟CommandButton,而且能够满足大多数应用的需要。

注意,在没有配备鼠标的系统中,因为只能使用键盘作为输入设备,而Image又没有键盘事件的接口,这时就只能用PictureBox了。

VB安装到硬盘上之后,在VB目录下提供了丰富的图形库。

其中包

括位图(Bitmap,在BITMAPS子目录下)、图标(Icon,在ICONS子目录

下)和图元(MetafiIe,在METAFILE子目录下)。

每种图形又按类分别

存储在不同的子目录下。

在图标按钮的制作中,我们可以使

用BITMAPST00LBAR3子目录下的位图。

该目录中存储了常用工具栏

中的按钮的位图,每种按钮一般有三个位图文件,分别对应按钮在

松开、按下和无效时的状态。

例如,、

和分别对应剪切(cut)按钮在松开、按下和无效时的状

态。

因此,我们可让按钮在松开时装入*,按下时装入*,按钮无效时装入*。

可以编写如下的相应事件

过程代码(以PictureBox实现的剪切按钮为例)

SubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAs

Single)

=LoadPicture("C:

VBBIT-MAPSTOOLBAR3”)

'按下鼠标按钮时,装入按钮被按下时的位图

EndSub

SubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAs

Single)

=LoadPicture("C:

VBBITMAPSTOOLBAR3”)

松开鼠标按钮时,装入按钮被松开时的位图

EndSub

SubPicture1_Click()

此处插入单击按钮时的处理代码

EndSub

如果需要设置按钮的无效状态,则可使用如下语句:

=False

=LoadPicture("C:

VBBIT-MAPST00LBAR3”)

装入按钮无效时的位图

当按钮恢复为有效时,再使用下列语句

=True

=LoadPicture("C:

VBBITMAPSTOOLBAR3”)

装入按钮松开时的位图

这样,我们就实现了用PictureBox模拟图标按钮。

用Image模拟图标

按钮的方法与此完全相同。

在程序中,一般用一个PictureBox作为工具

条,这里的PictureBox作为容器(container)控件,在PictureBox中再加入各

个图标按钮。

这在多文档界面(MDI)中的主窗体MDIForm上尤其有必要,因为普通控件不能直接加入到MDIForm中,只有具备Align属性

的PictureBox才能加入至UMDIForm。

二、使用扩充控件实现图标按钮

VB的扩充控件中有几种能直接支持图标的按钮。

下面仅介绍其

中的三种扩充按钮,即3D命令钮(3DCommandButton)、3D组按钮(3D

GroupPushBu11on)和动画按钮(AnimatedButton)。

使用这三种控件制

作图标按钮比起使用PictureBox或Image模拟的图标按钮要方便得多。

在下面的介绍中,会给岀每种控件对应的文件名和控件的对象类型,

如果在工具箱中找不到该控件,则在VB的File|AddFile...菜单命令弹出的对话框中双击与该控件对应的文件名(一般在Wndows的SYSTEM目录下),即可将该控件加入到工具箱中。

对于扩充控件接口的特性(属性、事件和方法),我们仅介绍其扩充的部分,与标准控件相同的其它接口则不再赘述。

1、3DCommandButton

文件名为,对象类型为SSCommand,属性如表2所示。

表2

属性数据类型定义

AutoSizelntegerO——(缺省状态)不调整尺寸;

1——把装入的图片尺寸调整为按钮的大小。

如果装入的图片是

一个图标(Icon)或按钮本身有标题,则该值不起作用;

2——把按钮的尺寸调整为装入图片的大小。

如果按钮本身有标题,则该值不起作用。

BevelWdthlnteger按钮周围斜角的宽度,取值范围为0〜10,缺省值为2。

Font3Dlnteger设置标题的立体显示效果:

0——(缺省状态)无立体效果;

1——略微凸岀;

2——强烈凸岀;

3——略微凹进;

4——强烈凹进。

OutlineInteger确定有无边框,取值为True(缺省状态)或False。

PictureInteger位图或图标,不能是图元。

RoundedCornersInteger按钮是否为圆角,取值为True(缺省状态)或False。

3DCommandButton的属性

3DCommandButton是一个本身具有Picture属性的按钮,用它可装入

一个图片,同时它还具有按钮的功能。

3DCommandButton不能接

收MouseDown和MouseUp之类的鼠标事件,因此不能像PictureBox那样通

过装入不同的图片来显示按钮被按下和松开的状态。

3DCommand

Button之所以被称为“3D”,是因为它本身能够处理按钮按动时的三

维视觉效果。

用3DCommandButton制作图标按钮时,只需装入一个按钮松开时的图片(例如,)即可,其余的无需用户操心。

2、3DGroupPushButton

文件名为,对象类型为SSRibbon,属性如表3所示。

属性数据类型定义

AutoSizelntegerO(缺省状态)不调整尺寸;1把装入的图片

尺寸调整为按钮的大小;2——把按钮的尺寸调整为装入图片的大

小。

BevelWdthlnteger按钮周围斜角的宽度,取值范围为0〜2(缺省状

态)。

GroupAllowAllUpInteger是否允许同组内的所有按钮都处于松开的状

态。

取值为True(缺省状态)或FaIse。

当设置组中一个按钮

的GroupAIIowAIIUp属性值时,本组其它按钮的GroupAIIowAIIUp属性也被自动设置为相同的值。

GroupNumberlnteger组号。

取值为:

0不属于任何组,可由用户

或程序代码任意开关;1(缺省状态)〜99——按钮属于该组号定义的

逻辑组。

若在处于同一逻辑组的所有按钮中按下某个按钮时,则另外处于按下状态的按钮会被自动松开。

OutIineInteger同3DCommandBu11on。

PictureDisabledInteger按钮被禁止(EnabIed属性为False)时的位图。

PictureDnInteger按钮被按下时的位图。

PictureDnChangelnteger女口果没有指定PictureDn,女口何由PictureUp变换出PictureDn:

0PictureUp不变;1——(缺省状态)抖动PictureUp。

把PictureUp位图中与BackColor颜色相同的点每隔一个变成白色,这样就产生了将该颜色加亮的效果;2将PictureUp位图取反。

PictureUpInteger按钮松开时的位图。

RoundedCornersInteger同3DCommandButton。

3DGroupPushButton的属性要比3DCommandButton丰富些,一旦我们在设计阶段把按钮各种状态时的位图加载好,在程序中就可不必理会它了。

如果图形库中只有按钮松开时的位图,没有按钮按下时的位图,则还可以利用PictureDnChange属性来加以弥补。

3DGroupPushButton的另一个引人注目的特性是它能够对多个按钮进行逻辑分组和自动控制,这一点无疑在实际应用中增添了更多的功能和更大的灵活性。

3DGroupPushButton是自锁式的,即按动后保持按下状态,而不是

随鼠标键的松开而弹起。

要想让按钮重新弹起,还需再按一次,这同

录音机上的暂停键相似。

如果要让3DGroupPushButton表现得和普通按

钮一样,随鼠标键的松开而弹起,则需对Click事件进行编程。

3DGroup

PushButton的Click事件过程与普通按钮稍有不同,其中增加了一个整

型参数Value:

SubGroupPush3D_CIick(ValueAsInteger)

Value可取值为True或False,分别代表按钮的状态是按下还是松

开,3DGroupPushButton的Value属性与此相对应。

若在Click事件过程中

力口入语句:

=False,贝U可让3DGroupPushButton表现得

和普通按钮一样,随鼠标键的松开而弹起

3、AnimatedButton

文件名为,对象类型为AniPushButton,属性如表4所

示。

属性数据类型定义

CCBfileLoadString调出文件中存储的图像和按钮属性信息。

CCBfileSaveString把图像和按钮属性信息存入文件。

ClearFirstInteger确定按钮切换到下一帧前是否清掉前一帧,取值

为True或False。

ClickFilterInteger确定按钮的哪部分能检测到鼠标单击:

0——(缺省状态)按钮的任何部位都能检测到鼠标单击;1--鼠标单击必须位于标题文本上或图像框中才能被检测到;2——鼠标单击必须位于实际的图像框中才能被检测到;3鼠标单击必须位于标题文本上才

能被检测到。

Cyclelnteger控制动画的播放周期:

0(缺省状态)用户按动按

钮时播放动画的前半部分,按钮松开时播放后半部分,最后回到第一帧;1——松开按钮时跳到下一帧,同时把Vaiue属性值加1o如果按钮处于最后一帧,单击时则跳回第一帧。

这是每次播放一帧的多态按钮;2——第一次单击按钮时,播放动画的前半部分,同时把Value属性值从1变为2;再次单击按钮时,播放后半部分,按钮回到第一帧,同时把Value属性从2变回1。

因此,这是一种二态按钮。

FrameInteger设置当前帧。

HideFocusBoxInteger是否隐藏表示输入焦点的虚线框,取值为True

或False(缺省状态)。

PictDrawModeInteger设置图像(位图或图标)在按钮中的绘画方式

:

0--(缺省状态)用PictureXpos和PictureYpos属性值确定图像的位

置,用TextPosition属性控制标题的位置。

这些属性用0〜100的标尺来控制X和Y的位置;1--自动控制尺寸模式,按钮尺寸调整到能放下最大图像或标题;2——调整图像的尺寸,扩展或压缩图像框以适应按钮的尺寸。

这时标题(如果有的话)总是显示在按钮的顶部(好

像Text-Position属性为0—样)。

PictureInteger同Form、PictureBox等。

PictureXposInteger控制按钮中图像的水平位置,取值为0〜100。

PictureYposInteger控制按钮中图像的垂直位置,取值为0~100。

SpecialOpInteger触发一个特殊操作,当该属性取某个值时,该操作

被触发。

取值为:

1——模拟单击;其它值——无效。

Speedinteger设置间的延迟时间(毫秒)。

取值范围为0(缺省状

态)〜32767。

TextPositioninteger确定标题的位置,同时也会影响图像的位置。

值为:

0——(缺省状态)标题位置由TextXpos和TextYpos确定,图像位

置由PictDrawMode、PictureXpos和PictureYpos确定;1——图像在左边,标

题在右边,标题的垂直坐标由TextYpos确定;2——图像在右边,标题

在左边,标题的垂直坐标由Text-Ypos确定;3——图像在下边,标题在

上边,标题的水平坐标由TextXpos确定;4——图像在上边,标题在下

边,标题的水平坐标由TextXpos确定。

TextXposinteger确定标题的水平位置。

TextYposinteger确定标题的垂直位置。

Valueinteger指示二态或多态按钮的状态。

与3DCommandButton和3DGroupPushButton相比,AnimatedBu11on要复

杂得多。

当然,AnimatedButton提供的功能也要多得多。

首先,Animated

Button可以存储多幅画面并以动画的形式连续播放,当然这对于我们

实现工具栏中的二态(按下和松开)图标按钮是绰绰有余了。

次,AnimatedButton可以让标题和图像共存而互不影响,不像3D

CommandButton中标题与图像会相互重叠,结果一个也看不清。

3D

GroupPushButton中则根本没有提供标题属性。

另夕卜,AnimatedButton还

允许我们定义鼠标单击的有效范围,这也是非常好的一项功能扩

充。

三、结束语

以上我们介绍了在VB中制作图标按钮的四种方法。

其中以使

用PictureBox或Image模拟的方法最为常见(VB提供的多文档界面的示例

程序VBSAMPLESMDI中用的就是这种方法),而后三种

分另U使用扩充控件3DCommandButton、3DGroupPushButton或Animated

Button实现图标按钮的方法则很少见到。

但后三种扩充控件是专门开

发的,因而使用起来更方便些,特别是当每种扩充控件均有其独到

的特性和功能时尤其如此。

探来源:

•深大荔园晨风站

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1