PictureClip 控件保存了可用于其它 Visual Basic 控件的多个图象。所有的图象包含在一个位图中。这样从该位图中“剪贴”的选定区域,就可用于 PictureBox 控件以创建动画,或用于多个 PictureBox 控件以创建工具框。
PictureClip 控件可与任何控件共同使用,只要它可为其 Picture 属性赋予 Picture 对象即可,这些控件包括 PictureBox、Image 和 CommandButton 控件等。
在一个 PictureClip 控件中保存多个图象,既节省了 Windows 资源,又加快了获取图象的速度。PictureClip 控件在某些方面与 ImageList 控件有些相象,然而,它们之间也有区别,这就是 PictureClip 控件中的所有图象资源必须保存在一个位图中,而 ImageList 控件是独立位图的集合。
使用 PictureClip 控件的第一步是创建图象资源位图。PictureClip 控件只支持 16 色的位图 (.bmp) 图象。在创建图象集时,先准备好所有单个图象,然后将它们剪切并粘贴在一个位图中,如下所示。
包含资源位图的 PictureClip 控件
注意 需要保证每个图象的大小相同。这样在 PictureBox 控件显示单个图象时,这些图象才会显示在同一区域。在上面的示例中,每个陀螺的图象是相等大小的正方形。
创建图象资源位图后,要将它加载到 PictureClip 控件中。PictureClip 控件的“属性页”对话框,可用于将该位图加载到该控件中,并用列数和行数设置网格。
要在设计时将资源位图加载到 PictureClip 控件中,请按照以下步骤执行:
将资源位图加载到 PictureClip 控件中
在运行时使用 Picture 属性,也可以将图象资源位图加载到 PictureClip 控件中。如下面的示例所示:
PictureClip1.Picture = LoadPicture("c:\Program _ Files\Microsoft Visual _ Basic\Samples\PicClip\Redtop.bmp") '
如果您已经安装了Visual Basic
示例应用程序,PicClip
'
工程可以在\samples\VB98\
目录中找到。
创建图象资源位图,并将其加载到 PictureClip 控件中之后,就要确定如何获取每个图象了。
可以以剪贴区域的形式,获得图象资源位图的任意区域。用 ClipX 和 ClipY 属性确定剪贴区域的左上角,用 ClipHeight 和 ClipWidth 属性定义剪贴区域的大小。在 Clip 属性中保存了被剪贴的区域。
可将图象资源位图划分为指定数目的行和列。这样,这些行和列所分出的单元,就可用编号进行访问了。这些单元用 GraphicCell 属性进行编号。编号从 0 开始。从左到右,从上到下进行编号。
使用“属性页”对话框,可在设计时设置行数和列数。在上面的示例中,十八个红色陀螺被分为三行六列。
要在设计时设置行数和列数,请按照以下步骤执行:
图 2.24 设置行数和列数
可用 GraphicCell 属性指定希望将 PictureClip 控件图象资源位图中的哪个单元装载到 PictureBox 控件中。下面的示例在 Form_Load 事件过程中,将一幅图象(一个单元)加载到 PictureBox 控件中:
Private Sub Form_Load()
PictureClip1.Picture = LoadPicture("c:\Program _
Files\Microsoft Visual _
Basic\Samples\PicClip\Redtop.bmp")
PictureClip1.Cols = 6
PictureClip1.Rows = 3
Picture1.ScaleMode = vbPi xels
Picture1.Picture = PictureClip1.GraphicCell(2)
End Sub
注意 在 Visual Basic 中,窗体和图片框的缺省 ScaleMode 单位是缇。把显示图象的所有PictureClip控件的 ScaleMode设置为 vbPi xels。
如果已经通过 PictureClip 的“属性页”定义了它的行数和列数,那么只需使用 GraphicCell 属性即可将图象装载到 PictureBox 控件中。否则,必须先用 Cols 和 Rows 属性指定其行数和列数。要使用 GraphicCell 属性,必须至少定义一行一列。
Redtop.vbp 示例应用程序列在 Samples目录中。它在上面所示的示例基础上构造,并演示了如何用 PictureClip 控件创建一简单的动画。