PictureClip 控件

PictureClip 控件允许选择源位图的区域，然后在窗体或图片框中显示那个区域的图象。PictureClip 控件运行时不可见。能在 PictureClip 控件中使用的都是典型位图：

文件名

PICCLP32.OCX

类名

PictureClip

说明

PictureClip 控件为保存多图片源提供了有效的机制。可创建一个包含应用程序所需要的源位图来代替多个位图或图标。需要显示单个图标时，使用 PictureClip 控件在该源位图中选择包含该图标的区域。

例如，能使用这个控件来保存应用程序显示工具箱时所需要的全部图象。在一个 PictureClip 控件中保存工具箱所有图片比分别在各图片框中保存各个图片更有效。为此，首先要建立一个源位图，该源位图包含工具栏的所有图标。在此主题顶部的图片就是这种位图的示例。

注意 对国际本地化应用程序，资源文件有时是保存位图更有用的方法。详细信息，请参阅 Visual Basic 《程序员指南》中的第十六章“国际化”。

在源位图中指定裁剪区域有两种方法：

  • 选择源位图的任意部分作为裁剪区域。用 ClipX 和 ClipY 属性指定裁剪区域的左上角。用 ClipHeight 和 ClipWidth 属性指定裁剪区域的范围。这种方法在想要查看位图的随机分区时是有用的。

  • 将源位图划分成指定的行数和列数。结果得到一个编号为 0、1、2 等等的图片单元的统一矩阵。用 GraphicCell 属性能显示各个单元。在源位图包含了要分别显示的图标板时，这种方法是有用的，如工具栏位图就是这样。

用 Picture 属性将源位图加载到 PictureClip 控件。只能将位图 (.bmp) 文件加载到 PictureClip 控件。

发行注意 当建立和发布使用 PictureClip 控件的应用程序时，应该在用户的 Microsoft Windows 的 System 或 System32 子目录中安装 PicClp32.ocx。包括在 Visual Basic 中的 Setup Kit 提供工具，它用来帮助写能正确地安装应用程序的安装程序。


Topic Not Found

未找到该主题

未找到相匹配的主题。可能的原因和解决方法如下：

  • 包含目标主题的文件 (.chm) 没有位于指定的位置。

    解决方法：重新运行 MSDN Library的安装。

  • 包含当前主题或目标主题的文件 (.chm) 已经过时，并且链接不再有效。

    解决方法：安装最新版本的 MSDN Library。

  • MSDN Library CD 不在 CD-ROM 中。

    解决方法：将 MSDN Library CD 装入 CD-ROM 中。


错误消息（PictureClip 控件）

下表列出 PictureClip 控件的可捕获错误。

错误号 | 常数 | 描述— 信息解释
7 | picOutOfMemory | 溢出内存。
383 | picSetNotPermitted picSetNotSupported | 在该控件中不能设置属性。属性是只读的。
394 | picGetNotSupported | 属性是只写的。
32000 | picInvalidPictureFormat | 不支持的图片格式。
 |  | 只能将位图 (.bmp) 文件加载到 PictureClip 控件中。
32001 | picDisplayContext | 不能获得显示上下文。
32002 | picMemDevContext | 不能获得存储设备上下文。
32003 | picBitmap | 不能获得位图。
32004 | picSelBitmapObj | 不能选择位图对象。
32005 | picIntPicStruct | 不能分配内部图片结构。
32006 | picBadIndex | GraphicCell 索引无效。
 |  | GraphicCell 属性的 index 参数超出范围。该参数必须在范围 0 到 (PicClip.Rows * PicClip.Cols) 1 之内。
32007 | picNoPicSize | 没有 GraphicCell 图片指定的尺寸。
32008 | picBitmapsOnly | 只允许位图 GraphicCell 图片。
32010 | picBadClip | GraphicCell PictureClip 属性请求无效。
32012 | picGetObjFailed | GetObject() Windows 函数失败。
 |  | 对 Windows 函数 GetObject () 的调用失败。
32014 | pic | Windows 函数 GlobalAlloc() 失败。
 |  | 对 Windows 函数 GlobalAlloc () 的调用失败。
32015 | picClipBounds | 裁剪区域边界错误。
 |  | ClipHeight 和 ClipWidth 属性指定的坐标，它们超过位图加载到 PictureClip 控件的边界。
32016 | picCellTooSmall | 单元格尺寸太小（必须至少是 1 * 1 像素）。
32017 | picRowNotPositive | Rows 属性必须大于零。
32018 | picColNotPositive | Cols 属性必须大于零。
32019 | picStretchXNegative | StretchX 属性不能为负。
32020 | picStretchYNegative | StretchY 属性不能为负。
32021 | picNoPicture | 没有图片赋值。


CellHeight、CellWidth 属性（PictureClip 控件）

返回 PictureClip 控件的 GraphicCell 属性的高度和宽度的像素数。

语法

object.CellHeight

object.CellWidth

object 所在处表示对象表达式，其值是一个 PictureClip 控件。

说明

CellHeight 和 CellWidth 属性取决于 PictureClip 控件的 Cols 和 Rows 属性。例如，一幅划分成四列和四行的图片将成为 GraphicCell，它是相同图片划分成八列和八行两倍的大小。


Clip 属性（PictureClip 控件）

返回 PictureClip 控件中指定区域的位图，该区域由 ClipX、ClipY、ClipWidth 和 ClipHeight 属性指定。此属性在运行时只读。

语法

[form.]PictureClip.Clip

说明

从选择的位图中指定随机裁剪区域应使用这种属性。

当 Visual Basic 中将 Clip 图象赋值给图片控件时，应确保为图片控件设置的 ScaleMode 属性为 3（像素）。由于定义裁剪区域的 ClipHeight 和 ClipWidth 属性是用像素度量的，因此必须使用像素。

数据类型

Integer


ClipHeight 属性（PictureClip 控件）

指定由 Clip 属性所复制的位图部分的高度。此属性设计时不可用。

语法

[form.]PictureClip.ClipHeight[ = Height%]

说明

这种属性是用像素度量的。

数据类型

Integer


Clip 示例（PictureClip 控件）

Visual Basic 示例

当指定 X 和 Y 坐标然后单击窗体时，下面的示例将在图片框中显示 Clip 图象。首先用 PictureBox、PictureClip 和两个 TextBox 控件创建一个窗体。在设计时，用属性工作表将有效的位图加载到 PictureClip 控件。

Private Sub Form_Click ()
   Dim SaveMode As Integer
   '为图片框保存当前的 ScaleMode。
   SaveMode = Picture1.ScaleMode
   '获得裁剪区域的 X 和 Y 坐标。
   PicClip1.ClipX = Val(Text1.Text)
   PicClip1.ClipY = Val(Text2.Text)
   '设置裁剪区域的范围（用像素）。
   PicClip1.ClipHeight = 100
   PicClip1.ClipWidth = 100
   '设置图片框 ScaleMode 为像素。
   Picture1.ScaleMode = 3
   '设置的为填充图片框目标范围。
   PicClip1.StretchX = Picture1.ScaleWidth
   PicClip1.StretchY = Picture1.ScaleHeight
   '为图片框指定裁剪位图。
   Picture1.Picture = PicClip1.Clip
   '使图片框的 ScaleMode 复位。
   Picture1.ScaleMode = SaveMode
End Sub


ClipWidth 属性（PictureClip 控件）

指定由 Clip 属性所复制的位图部分的宽度。此属性设计时不可用。

语法

[form.]PictureClip.ClipWidth[ = Width%]

说明

这种属性是用像素度量的。

数据类型

Integer


ClipX 属性（PictureClip 控件）

指定由 Clip 属性所复制的位图部分左上角的 x - 坐标。此属性设计时不可用。

语法

[form.]PictureClip.ClipX[ = X%]

说明

这种属性是用像素度量的。

数据类型

Integer


ClipY 属性（PictureClip 控件）

指定由 Clip 属性所复制的位图部分左上角的 y- 坐标。此属性设计时不可用。

语法

[form.]PictureClip.ClipY[ = Y%]

说明

这种属性是用像素度量的。

数据类型

Integer


Cols、Rows 属性（PictureClip 控件）

设置或返回图片中列或行的总数。

语法

[form.]PictureClip.Cols[ = cols%]

[form.]PictureClip.Rows[ = rows%]

说明

用这些属性将源位图划分成图片单元的统一矩阵。使用 GraphicCell 属性可指定各个单元。

PictureClip 控件至少必须有一列或一行。

每一个图形单元的高度是由源位图的高度除以指定行数来决定。源位图底部剩余像素（由整数四舍五入引起的）方法裁剪。

每一个图形单元的宽度是由源位图的宽度除以指定行数来决定。源位图右边剩余像素（由整数四舍五入引起的）方法裁剪。

数据类型

Integer


GraphicCell 属性（PictureClip 控件）

代表所有图片单元的一维图片数组。此属性设计时不可用，运行时只读。

语法

[form.]PictureClip.GraphicCell (Index%)

说明

  • 用 Rows 和 Cols 属性将图片划分成图形单元的统一矩阵。

  • 由 GraphicCell 对指定单元进行索引，从 0 开始，从左到右，从上到下增加。

  • 当读此属性时，如果没有图片或 Rows 或 Cols 属性设置为零时，将产生错误。

数据类型

Integer


Height、Width 属性（PictureClip 控件）

返回控件中所包含位图的高度和宽度（按像素）。这些属性设计时不可用，运行时只读。

语法

[form.]PictureClip.Height

[form.]PictureClip.Width

说明

这些属性仅当控件包含位图时有效。

在设计时用 Visual Basic 中的属性工作表能将位图加载到 PictureClip 控件中，在运行时用 LoadPicture 函数也能将位图加载到 PictureClip 控件中。

数据类型

Integer


Picture 属性（PictureClip 控件）

此属性与 Visual Basic 标准 Picture 属性相同，除了它仅支持位图 (.bmp) 文件之外。


StretchX、StretchY 属性（PictureClip 控件）

为用 Clip 属性所创建的位图指定其目标的大小。此属性设计时不可用。

语法

[form.]PictureClip.StretchX[ = X%]

[form.]PictureClip.StretchY[ = Y%]

说明

用这些属性定义用以复制 Clip 位图的范围。当复制位图时，为使其适合 StretchX 和 StretchY 定义的范围，它不是伸展就是压缩。

StretchX 和 StretchY 是用像素度量的。

注意 在 Visual Basic 中，缺省 ScaleMode 对窗体和图片框是缇。对所有显示来自 PictureClip 控件图片的控件，应设置 ScaleMode = 3（像素）。

数据类型

Integer