随着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色的图形文件。如果你的图像可通过扫描获得,你应将所有图片一次 扫描得到一个大图像文件,再将其裁剪成各尺寸相同的小图,这样即可完全避免 上述颜色失真现象。