admin 管理员组

文章数量: 887021


2024年2月19日发(作者:bad pool header是什么意思)

在应用程序的设计中,我们常常会用到大量的图标、光标和位图资源,如果把它们都作为文件单独存放在硬盘则势必会造成管理上的混乱,甚至应用程序效率的降低,尤其是工具条和TreeView等控件使用的图标和在设计RPG游戏时主角在地图上行走姿态的图片等更是有必要进行集中存放,尽管在Visual Basic中有很多方法可以做到这一点(比如放到资源文件*.RC中),但ImageList控件无疑是其中一种较为可行的实现途径。

作为文件中的一个ActiveX部件,在使用前要先对该文件进行注册,对于VB的专业版和企业版可以在部件对话框中直接找到该控件,而某些版本可能需要用浏览的方式找到该文件再进行选择。将该控件添加到工具箱并拖放到窗体之后即可为它添加图片对象,实现的途径一是在属性对话框中,按Custom按钮(中文版为“自定义”)并在弹出的对话框中添加图片,另一种则是在代码中利用Add方法来完成:

(index,key,picture)

其中Object为ImageList集合中的ListImages对象,index为索引,KEY为标识图标的唯一字符串(即不允许重复),后面二者均为可选参数,Picture为必须指定的待加入图片,例:

Set imgX=(,,Load Picture_(“C:”))

这里要注意的是ImageList控件要求图片的大小相等,否则会对图片强行裁剪,对于在设计阶段就加入图片的情况该控件会以第一次加入的图片大小为准,而对于在运行期间则以代码指定的宽度属性ImageWidth和高度属性ImageHeight为准,也就是说,这两个属性是只写一次属性。把图片加入到ImageList集合中后就可以进行应用了,最常见的是我们把它和Tree View、TabStrip、ListView和ToolBar等控件相关联,例:

(,,LoadPicture(“”))

(,“A”,LoadPicture(“Open,ico”))

ist=ImageList1 '关联

(3).Image=1 '通过索引引用图片

(5).Image=“A” '通过Key引用图片

这样,我们就可以把TreeView控件中的3节点和5节点的图标分别指定为和了,同样的道理,我们还可以为ToolBar等控件建立这种关联:

Set btnX=

ist=ImageList1

Set btnX=(,,,,“A”)

运行程序我们可以看到工具条上新添加的前一个按钮是空白的而后一个显示图标。

当然,ImageList控件的用途并非仅仅局限于和这几种控件相关联,正如前面提到的,我们可以把RPG游戏主角的各种姿态放入到控件中以进行切换,设主角在集合中几种姿态对应的Key标识分别为“Left”、“Right”、“UP”、“Down”,下面是切换主角姿态的代码:

With ImageList1

.ListImage(“Left”).Draw ,x,y,imlTransparent

.ListImage(“Right”).Draw ,x,y,imlTransparent

.ListImage(“Up”).Draw ,x,y,imlTransparent

.ListImage(“Down”).Draw ,x,y,imlTransparent

End With

这里使用了一个Draw方法,它将ImageList集合中指定图像绘制到目标设备环境中,其中第一个参数指定目标设备环境(比如例中的,也可为),第二、三个参数指定在目标设备环境中的起始绘制座标,默认为0,0(左上角),第四个参数指定绘图模式:

常量 值 描述

imlNormal 0 正常的覆盖操作,类似于

Paint Picture的缺省操作

imlFransParent 1 透明,对MaskColor指定的

颜色不予绘制

imlSelected 2 使用系统高亮度颜色抖动

图像

imlFocus 3 绘制抖动图像并剥掉高度

颜色

需要注意的是其中的imlTransparent常量必须在指定UseMaskColor和MaskColor属性时方为有效:

kColor=True

lor=VbRed

这样,我们就指定了红色作为图片的背景色,当遇到红色时将不予绘制而保存背景。

另外,我们还可以利用Overlay方法从两个图片对象中产生新的图片:

lor=VbBlue

kColor=True

Set e=y(1,“A”)

这样,我们就能得到集合中第一个图片和Key为“A”的图片的叠加图像,同时“A”图片的蓝色部分不予绘制,下面是利用ExtractIcon方法创建图标或光标的代码例子:

Set PicA=age(“A”).ExtractIcon

With Form1

.MouseIcon=PicA

.MousePointer=VbCustom

End With

最后还想说明一点的是文中的代码均不能直接独立运行,但限于篇幅我们不可能将所有的代码一一列上,正所谓“授之以鱼莫如授之以渔”,知道实现的方法则已足矣,另外就是ImageList控件还有一个hImageList属性可引用该控件的句柄,其用法很简单,在此不再赘述。

ImageList控件的使用方法

ImageList 控件包含ListImage对象的集合,该集合中的每个对象都可以通过其索引或关键字被引用。ImageList 控件不能独立使用,只是作为一个便于向其它控件提供图象的资料中心。

语法 ImageList 说明

ImageList控件的作用象图像的储藏室,同时,它需要第二个控件显示所储存的图像。第二个控件可以是任何能显示图像Picture对象的控件,也可以是特别设计的、用于绑定ImageList控件的Windows通用控件之一。这些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和TreeView控件。为了与这些控件一同使用ImageList,必须通过一个适当的属性将特定的ImageList控件绑定到第二个控件。对于ListView控件,必须设置其Icons和SmallIcons属性为ImageList控件。对于TreeView、TabStrip、ImageCombo和Toolbar 控件,必须设置ImageList 属性为ImageList 控件。

在设计时,可以用ImageList控件属性”对话框的“图像”选项卡来添加图象。在运行时,可以用Add方法给ListImages集合添加图象。

对于Windows通用控件来说,设计时可以用“自定义属性”对话框来指定一个ImageList。

运行时也可以用ImageList属性指定一个ImageList控件,就象下面的例子所述的那样,它可以设置TreeView控件的:

ist = ImageList1 指定ImageList 属性

重点 :当与Windows通用控件一起使用ImageList控件时,在将它绑定到第二个控件之前,按照您希望的顺序将全部需要的图像插入到ImageList。一旦ImageList被绑定到第二个控件,您就不能再删除图像了,并且也不能将图像插入到ListImages集合中间。但是您可以在集合的末尾添加图像。

一旦ImageList与某个Windows通用控件相关联,就可以在过程中用Index属性或Key属性的值来引用ListImage 对象了。下面的示例设置TreeView控件的第三个 Node对象的Image属性为ImageList控件中的第一个ListImage 对象:

使用 ImageList1 的Index属性值。

(3).Image = 1

或者使用 Key属性值。

(3).Image = "image 1" 假定Key值为 "image 1。"

要与其它控件(不能绑定到ImageList控件的控件)一起使用ImageList控件,将第二个控件的Picture属性赋值给ImageList控件中的任何一个图像的Picture对象。例如,下面的代码把ListImages集合中的第一个ListImage对象的Picture对象赋值给一个新创建的StatusBar面板的Picture属性:

Dim pnlX As Panel

Set pnlX = () 添加一个 Panel 对象。

Set e = ages(1).Picture 设置图片。

注意 将图像赋值给Picture 对象时,必须使用 Set 语句。

可以插入任何大小的图像到ImageList控件中。然而,由第二个控件显示的图像大小是由一个因素决定的:第二个控件是否也是一个绑定到ImageList控件的 Windows通用控件。

当ImageList控件被绑定到另一个Windows通用控件时,不同大小的图片可以被添加到控件中,但是在关联的Windows通用控件中显示的图象大小将受到添加到 ImageList图像中的第一个图象大小的约束。例如,如果您添加一个16×16像素的图像到ImageList控件中,然后将ImageList绑定到 TreeView 控件(用Node 对象显示),所有存储于ImageList 控件中的图像将以16 ×16像素显示,即使它们的尺寸是更大或更小。

此外,如果您用Picture对象显示图像,则存储在ImageList控件中的任何图像都将以图像最初的大小显示,无论它的尺寸是更大还是更小。发行注意ImageList控件是ActiveX控件组的一部分,该控件组可以在文件 中找到。若是在应用程序中使用ImageList控件,必须把文件 添加到工程中。在分行应用程序时,应把文件 安装到Microsoft Windows的System目录或者System32目录下。


本文标签: 控件 图像 图片 属性 指定