利用Visual Basic实现图像艺术清屏的方法
2009-07-16李沫李杨孟坛
李 沫 李 杨 孟 坛
[摘要]Visual Basic在实现图形动画方面,有其独到之处,简述使用V B专业版实现图像艺术清屏的方法,为进一步理解编程思想,更好的掌握编程原理,学好V B程序设计提供参考。
[关键词]图像艺术清屏 循环控制 动画按钮 BMP图片
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0420056-01
在教学中,学生总是对移动的图[摘要]Visual Basic在实现图形动画方面,有其独到之处,简述使用V B专业版实现图像艺术清屏的方法,为进一步理解编程思想,更好的掌握编程原理,学好V B程序设计提供参考。
[关键词]图像艺术清屏循环控制动画按钮BMP图片
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0420056-01形画面有很强的好奇心,教师可
以在教学中穿插动画教学,充分调动学生学习兴趣,下面就谈谈使用Visual Basic专业版实现艺术清屏的方法。
一、准备工作
获取若干图形尺寸大小相同的BMP图形文件。推荐以下两种方法:
1.利用PHOTOSHOP或画笔裁剪出若干图形尺寸相同的BMP图形文件存盘。
2.利用现有图像文件,通过3DS生成若干图形尺寸相同的BMP图形文件。简明步骤如下:(1)进入3DS中,将Render-Setup-Background文件名,设定成现有图形文件名。(2)在任意视图中,设定Render-View-Configure-文件类型256色BMP非压缩类型、背景Recale、disk存盘,即可生成符合图形尺寸大小的BMP图形文件存盘。
二、设计方法
1.放置控件在窗体Form1中,建立两个PictureBox控件:Form1.Pict
-ure1(0)和Form1.Picture1(1),设Form1.Picture1(1)在Form1.Picture1(0)之上,并使此两个控件的位置大小完全一样。
2.图像艺术清屏实现原理。利用反复交替改变Form1盤icture1(1)的Width或Height的大小实现图像的左右上下拖拽、卷起,达到图像清屏效果。可通过设置CommandButton的事件代码实现(见CommandButton的Command1代码)。
通过循环控制上层图Form1.Picturc1(1)的Width或Height大小:
当其由小→大循环递增时,形成图像拖拽效果,当Width或Height达到实际图像的宽度或高度,完全遮盖住下层图Form1.Picture1(0)时,对下层图Form1.Picture1(0)换图,改变Form1.Picture1(0)Picture属性。
当其由大→小循环递增时,形成上层图像卷起、下层图像拖拽的效果,当Width或Height达到0,完全露出下层图Form1.Picture1(0)时,对上层图Form1.Picture1(1).Picture换图,改变Form1.Picture1(1).Picture属性。
三、VB实现图像艺术清屏程序部分关键代码
其中t1-t7.bmp均为320*200*256C分辨率的BMP文件。
Private Sub Form-Load()
Form1.Caption = ″电脑艺术趣味清屏″
Form1.Picture1(0).AutoRedraw = True
Form1.Picture1(0).AutoSize = False
Form1.Picture1(1).AutoRedraw = True
Form1.Picture1(1).AutoSize = False
Form1.Picture1(0).Left = Form1.Picture1(1).Left
Form1.Picture1(0).Top = Form1.Picture1(1).Top
Form1.Picture1(0).Width = Form1.Picture1(1).Width
Form1.Picture1(0).Height = Form1.Picture1(1).Height
EndSub
Private Sub Command1_Click()
Form1.Picture1(0).Picture = LoadPicture(″e:3ds4images 1.
bmp″)
Form1.Picture1(1).Picture = LoadPicture(″e:3ds4images 3.
bmp″)
w1 = Form1.Picture1(1).Width
h1 = Form1.Picture1(1).Height
Form1.Picture1(1).Height = h1
Form1.Picture1(1).Width = 0
For i = 0 To 50
Form1.Picture1(1).Width = i * w1 / 50
Next i
Form1.Picture1(0).Picture = LoadPicture("e:3ds4images 4.b
mp")
For i = 0 To 50
Form1.Picture1(1).Width = w1 - i * w1 / 50
Next i
Form1.Picture1(1).Picture = LoadPicture(″e:3ds4images 5.b
-mp″)
Form1.Picture1(1).Width = 0
For i = 0 To 50 ′step w1/50′
Form1.Picture1(1).Width = i * w1 / 50
Next i
Picture1(0).Picture图
Form1.Picture1(0).Picture = LoadPicture(″e:3ds4images 7.
bmp″)
Form1.Picture1(1).Height = h1
For i = 0 To 50
Form1.Picture1(1).Height = h1 - i * h1 / 50
Next i
Form1.Picture1(1).Picture = LoadPicture(″e:3ds4images 6.b
-mp″)
p″)
For i = 0 To 50
Form1.Picture1(1).Height = i * h1 / 50
Next i
End Sub
Private Sub Command2_Click()
End
End Sub
四、说明
当两个以上256色的图形文件同时在一屏幕显示,由于它们分享调色板颜色资源,若它们使用的颜色截然不同,就会出现颜色失真现象。应尽量避免同时使用两个256色的图形文件。如果你的图像可通过扫描获得,你应将所有图片一次扫描得到一个大图像文件,再将其裁剪成各尺寸相同的小图,这样即可完全避免上述颜色失真现象。
参考文献:
[1]谭浩强,Visual Basic 6.0中文版提高与应用,北京:电子工业出版社,1999.11:128-163.