APP下载

利用Visual Basic实现图像艺术清屏的方法

2009-07-16

新媒体研究 2009年8期

李 沫 李 杨 孟 坛

[摘要]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.