VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 图像艺术清屏
发表评论(0)作者:, 平台:, 阅读:15441, 日期:2000-03-12
山东李鲁群

几年前,《电脑爱好者》曾以《趣味清屏》一文抛砖引玉,使广大电脑发烧友

大开眼界,并以此引出千姿百态DOS下的清屏方法。而随着Windows的普及,DOS下

的清屏方式也应走向Windows艺术清屏。本文向大家介绍在Windows下,如何利用VB

做图像拖拽,形成图像艺术清屏效果。希望能再次抛砖引玉,在电脑爱好者天地中,

出现更好、更美的清屏方法。

 

一、准备工作

获取若干图形尺寸大小相同的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.Picture1(0)和Form1.Picture1(1),设Form1.Picture1(1)在Form1.

Picture1(0)之上,并使此两个控件的位置大小完全一样

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

且:Form1.Picture1(0).AutoRedraw=True

Form1.Picture1(0).AutoSize=False

Form1.Picture1(1).AutoRedraw=True

Form1.Picture1(1).AutoSize=False

 

2?图像艺术清屏实现原理

利用反复交替改变Form1?Picture1(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 = ″电脑艺术趣味清屏″

′将两图形控件重合放置,Picture1(0)在下,Picure1(1)在上

′Picture1(0)完全被Picure1(1)遮住

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()

′将图形文件装入Picture1控件Picture属性中,注意图wqje文件所在的路径

Form1.Picture1(0).Picture = LoadPicture(″e:\3ds4\images\t1.bmp″)

Form1.Picture1(1).Picture = LoadPicture(″e:\3ds4\images\t3.bmp″)

′记录下图像的宽度w1和高度h1

w1 = Form1.Picture1(1).Width

h1 = Form1.Picture1(1).Height

′Picture1(1).Picture由不可见状态,从左向右拉开形成图形清屏效果

Form1.Picture1(1).Height = h1

Form1.Picture1(1).Width = 0

For i = 0 To 50

Form1.Picture1(1).Width = i * w1 / 50

Next i

′当Picture1(1).Picture完全遮住Picture1(0).Picture时,换Picture1(0).

Picture图

Form1.Picture1(0).Picture = LoadPicture("e:\3ds4\images\t4.bmp")

′Picture1(1)?Picture从右向左折叠,露出Form1.Picture1(0).Picture图形

For i = 0 To 50

Form1.Picture1(1).Width = w1 - i * w1 / 50

Next i

′Picture1(1).Picture为不可见状态时,换图再次从左向右拉开形成图形清屏效



Form1.Picture1(1).Picture = LoadPicture(″e:3ds4\images\t5.bmp″)

Form1.Picture1(1).Width = 0

For i = 0 To 50 ′step w1/50′

Form1.Picture1(1).Width = i * w1 / 50

Next i

′当Picture1(1).Picture完全遮住Picture1(0).Picture时,再次换 Picture1(0).

Picture图

Form1.Picture1(0).Picture = LoadPicture(″e:\3ds4\images\t7.bmp″)

′当Picture1(1).Picture从下向上折叠,露出Form1.Picture1(0).Picture图形

Form1.Picture1(1).Height = h1

For i = 0 To 50

Form1.Picture1(1).Height = h1 - i * h1 / 50

Next i

′当Picture1(1).Picture为不可见状态时,换图再次从上向下拉开形成图形清屏

效果。

Form1.Picture1(1).Picture = LoadPicture(″e:3ds4\images\t6.bmp″)

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色的图形文件。如果你的图像可通过扫描获得,你应将所有图片一次扫描得

到一个大图像文件,再将其裁剪成各尺寸相同的小图,这样即可完全避免上述颜色

失真现象。