在某些方面,Picture 对象与 Printer 对象很相似— 它不可见,但很有用。可将图片对象想象为一个不可见的图片框,作为图象的一个显示区使用。例如,以下代码装入一个带位图的图片对象,使用该位图可设置图片框控件的 Picture 属性:
Private Sub Command1_Click()
Dim objPic As Picture
Set objPic = LoadPicture("Butterfly.bmp")
Set Picture1.Picture = objPic
End Sub
Picture 对象支持位图,GIF 图象,JPEG 图象,元文件和图标。
可用图片对象数组,把一系列图形保存在内存中,而不必用包含多个图形框或图象控件的窗体。当制作动画或其它应用程序时,在要求图象快速变换的地方,这是非常有用的。数组在模块级声明:
Dim objPics(1) As Picture
将下列代码添加到 Form_Load 事件中:
'
将位图加载到图片对象数组。Set objPics(0) = LoadPicture("Butterfly1.bmp")
Set objPics(1) = LoadPicture("Butterfly2.bmp")
然后在 Timer 事件中循环显示这些图象:
Static intCount As Integer If intCount = 0 Then intCount = 1 Else intCount = 0 End If '
用PaintPicture
方法'
在窗体上显示位图。PaintPicture objPics(intCount), 0, 0
添加循环,同时增加 x 和 y 的坐标值,可以很容易地使位图“蝴蝶”穿越窗体“飞行”。
在 Windows API 中可使用位图、图标或元文件做许多事情,不过图片对象已做了其中大部分事情。这就是说,如果有可能的话,使用图片对象来代替 Windows API 比较好。而且,图片对象能使用 jpeg 和 gif 文件,而 Windows API 则不行。
Picture.Handle 和 PictureBox.hDC 之间没有直接联系。hDC 属性是操作系统提供给图片框控件的设备上下文的句柄。Picture 对象的 Handle 属性,实际上是图片对象所含 GDI 对象的句柄。
现在有两种完全不同的方法可在窗口(或 blit)中画图。可在对象的 hDC 上使用 BitBlt 或 StretchBlt,也可在图片对象或属性中使用 PaintPicture 方法。若有图象控件,则只能用 PaintPicture,因为图象控件没有 hDC。
详细信息 关于 Windows API 的详细信息,请参阅《部件工具指南》中的“访问 DLLs 和 Windows API”,只在专业版和企业版中有效。