在用VB编制绘图程序时,有时需要将窗体或图片框上的绘图结果 形成一个定制的图形文件保存起来,以便以后浏览或修改。这一功能 可以用VB本身带有的SavePicture语句来完成。 SavePicture语句将窗体、图象控件或图片框中的图形图象保存 到磁盘上的一个文件中,这些图象可以是使用画图方法(Line,Circle, Pset)设计出来的,也可以存储那些通过设置窗体或图片框的图片属 性或者通过PaintPicture方法或LoadPicture函数载入的图象。这 些载入的图象可以是BMP、ICO或WMF图形文件。 SavePicture语句的语法格式如下: SavePicture picture,stringexpression,参数picture为窗 体或图片框的picture或image属性; 参数strngexpression为保存的文件名。 下面举一个具体的程序来说明定制图象文件的过程: 1 创建一个新的项目文件,在Forml中加入一个图象控件Picturel, 将Picture1的AutoRedraw属性设置为True。 2.在Form-Load()事件中,加入如下代码: Private Sub Form-Load() Dim CX As Integer Dim CY As Integer Dim Limit As Integer Dim Radius As Integer CX=1000 CY=1000 For Radius=0 To Limit Picturel.Circle(CX,CY),Radius,RGB(Rnd* 255,Rnd* 255, Rnd*255) Next Radius SavePicture Picturel.Image,"c:\custom.bmp" End Sub 执行此程序就会把图片框Picturel上的图象保存在C盘根目录下custom. bmp图象文件中。 最后有两点需要指出: 1.在使用SavePicture语句之前,必须先将窗体或图片框的AutoRedraw 属性设为True,否则保留的将是一张空图。 2.使用Image属性保存的用画图命令(如Line,Cirele,Pset或Print) 画出来的图形总是以BMP文件格式保存。但在程序设计时如果使用窗体或图片 框的Picture属性载入或在程序运行时通过LoadPicture函数载入的图象,使 用SavePicture语句存储时,存储的文件格式同其载入前的文件格式一样 (如ICO格式等)。 VB实现图形动画的三种方法 VB在实现图形动画方面,有其独到之处,下面笔者就谈谈使用VB专业版 实现图形动画的三种方法。 动画由两个基本部分组成。一是物体相对于屏幕的运动,即屏幕级动画; 二是物体内部的运动,即相对符号的动画。制作动画的原理就是画完一幅图形, 清除它的屏幕显示部分,再在新位置画第二幅图形,如此交替下去,利用人眼 的视觉效应,就可以产生动画效果,VB实现动画的原理也如此,但VB它不要求 编程人员详细了解图形如何再现和清除,这些工作由VB提供的工具来做,这样 就使VB实现动画很方便,编程也很简捷。 1.控制的移动。采用控制的移动技术可实现屏幕级动画,而控制移动方式 又可分两种:一是在程序运行过程中,随时更改控制的位置坐标Left、Top属性, 使控制出现动态;二是对控制调用MOVE方法,产生移动的效果。这里的控制可 以是命令按钮、文本框、图形框、图像框、标签等。 2.利用动画按钮控制。VB的工具箱中专门提供了一个动画按钮控制 (Animated Button Control)进行动画设计,该工具在Windows\system子目 录下以Anibuton.vbx文件存放,用时可加入项目文件中,这种方法实现动画的 过程与电影胶片的放映极为相似,它将多幅图像装入内存,并赋予序号,通过定 时或鼠标操作进行图像的切换,通过这种方法可实现相对符号的动画。此控制的 有关属性介绍如下: (1)Picture和Frame属性:Picture属性可装入多幅图像,由Frame属性 作为控制中多幅图像数组的索引,通过选择Frame值来指定访问或装入哪一幅图 像,这里Picture属性可装入.bmp、.ico和.wmf文件。 (2)Cycle属性:该属性可设置动画控制中多幅图像的显示方式 (3)PictDrawMode属性:该属性设置控制的大小与装入图像大小之间的 调整关系。 (4)Speed属性:表示动态切换多幅图的速度,以毫秒(ms)为单位,一 般设置小于100范围内。 (5)Specialop属性:该属性在程序运行时设置,与定时器连用, 来模拟鼠的Click操作,不需用户操作触发,而由系统自动触发进行动态图的切换。 3.利用图片剪切换控制。该控制也提供了在一个控制上存储多个图像或图标 信息的技术,正如用动画按钮一样,它保存Windows资源并可快速访问多幅图像, 该控制的访问方式不是依次切换多幅图,而是先将多幅图放置在一个控制中,然后 在程序设计时利用选择控制中的区域,将图动态剪切下来放置于图片框中进行显示, 程序控制每间隔一定时间剪切并显示一幅图,这样便可产生动画效果。该工具以 Picelip.VBX文件存于Windows\system子目录中,需要时可装入项目文件 中。此控制有关属性介绍如下: (1)Rows Cols属性:规定该控制总的行列数。 (2)Picture属性:装入图像信息,仅能装入位图.bmp文件。 (3)Clip X、Clip Y属性:指定要剪切图位于控制中的位置,左上角坐标。 (4)ClipWidth、ClipHeight属性:表示需剪切图的大小,即指定剪切区域。 (5)Clip属性:设计时无效,执行时只读,用于返回(3)、(4)两项指 定的图像信息。 (6)Grahiceell属性:该属性为一个数组,用于访问Picture属 性装入图像中的第一个图像元素。 (7)Stretch X、Stretch Y属性:设计时无效,执行时只读,在将被选中 图像装入拷贝时定义大小显示区域,单位为像素(Pixels)。 以上笔者只谈了VB实现图形动画的基本方法,有兴趣的读者可参考有关书目。