-
vb教程之用VB6.0制作多媒体影集
郝卫娟
当好友相聚时,如果你能够拿出亲手制作的一本多媒体影集,相信那优美的背景音乐和让人眼花缭乱的特技效果一定会令他们赞叹不已!
其实,这并不复杂,只要肯花些功夫,相信你一定可以制作出很好的作品!下面让我们用VB开始工作吧!
一、创建运行界面
在Form1窗口添加以下主要控件:
图片框PictureBox(picdest,picsource):用以演示图片素材。
定时器 (Timer1):控制音乐的循环播放。
定时器 (Timer2):控制图片的循环播放。
媒体控制对象Microsoft Multimedia Control(mciwave):用以播放音乐。
二、编写相片演示程序代码
常见的特技图像显示方式主要有扫描、移动、百叶窗、马赛克等。在这里,我们只示范二个常用的绘图方式,如果有兴趣,完全可以在此基础上加以改动,得到更多的花样。本文主要是用VB中的paintpicture方法来实现。
1) 扫描显示方式
扫描显示是动态绘图技巧的最基本形式,其原理是将源图像一行一行或一列一列地复制到目标区域,配合稍许的时间延迟及数据复制的方向,从屏幕上看就像是向下或向右依次将图形扫描出来。
由上至下扫描显示的实现方法是:从图像的顶部向下一行一行地从源对象中将位图复制到目标对象中,每复制一行后都加上一定的延时。下面的代码将实现向下扫描显示。(代码中dest为目标对象,source为源对象,dtime为延迟时间。显示图像已装入source。)
For j = 1 To 100
dest.PaintPicture source.Picture, 0, 0, picwidth, j stepy, 0, 0, picwidth, j stepy
Sleep dtime
Next j
根据扫描方向的不同,还有向上、向左、向右、水平平分和垂直平分等多种,其实现代码大致相仿。
2) 百叶窗显示方式
百叶窗显示方式,就如关闭百叶窗一样,图像被分成一条一条地显示出来。百页窗显示方式可分为垂直和水平两种形式。
垂直百叶窗显示的实现技巧是,首先将图像垂直等分为n部分,分n次完成每部分图像的向下扫描显示。但扫描显示时,依照差值扫描进行,即第i次显示i、i+n、...i+jn、...条扫描线,比如第1次显示1、9、17...条扫描线,第2次显示2、10、18...条扫描线,直到图像完整显示。
垂直百叶窗显示代码如下:
scanline = n
For i = 0 To (scanline - 1)
For j = i To picwidth Step scanline
dest.PaintPicture source.Picture, j, 0, 1,
picheight, j, 0, 1, picheight
Next j
Next i
实现水平百叶窗显示时,原理与上同,循环体代码修改如下即可:
dest.PaintPicture source.Picture, 0, j, picwidth, 1, 0, j, picwidth, 1
三、编写背景音乐程序代码
1)关闭音乐closemusic()
If Not mciwave.Mode = 524
Then mciwave.Command =″close″
2)播放音乐playmusic()
closemusic
mciwave.DeviceType = ″WaveAudio″
mciwave.FileName =App.Path + ″\music\″+ ″
tears.wav″ ′在此处可以将你喜爱的音乐文件加入
mciwave.Command=″Open″
mciwave.Command = ″Play″
3)音乐播放完后设置重播状态mciwave-Done(NotifyCode As Integer)
If firstflag Then firstflag = False
Timer2.Enabled = True
Timer2.Interval = 1000
4)定时器定时播放音乐Private Sub Timer2-Timer()
Timer2.Enabled=False
Playmusic
firstflag = True
当好友相聚时,如果你能够拿出亲手制作的一本多媒体影集,相信那优美的背景音乐和让人眼花缭乱的特技效果一定会令他们赞叹不已!
其实,这并不复杂,只要肯花些功夫,相信你一定可以制作出很好的作品!下面让我们用VB开始工作吧!
一、创建运行界面
在Form1窗口添加以下主要控件:
图片框PictureBox(picdest,picsource):用以演示图片素材。
定时器 (Timer1):控制音乐的循环播放。
定时器 (Timer2):控制图片的循环播放。
媒体控制对象Microsoft Multimedia Control(mciwave):用以播放音乐。
二、编写相片演示程序代码
常见的特技图像显示方式主要有扫描、移动、百叶窗、马赛克等。在这里,我们只示范二个常用的绘图方式,如果有兴趣,完全可以在此基础上加以改动,得到更多的花样。本文主要是用VB中的paintpicture方法来实现。
1) 扫描显示方式
扫描显示是动态绘图技巧的最基本形式,其原理是将源图像一行一行或一列一列地复制到目标区域,配合稍许的时间延迟及数据复制的方向,从屏幕上看就像是向下或向右依次将图形扫描出来。
由上至下扫描显示的实现方法是:从图像的顶部向下一行一行地从源对象中将位图复制到目标对象中,每复制一行后都加上一定的延时。下面的代码将实现向下扫描显示。(代码中dest为目标对象,source为源对象,dtime为延迟时间。显示图像已装入source。)
For j = 1 To 100
dest.PaintPicture source.Picture, 0, 0, picwidth, j stepy, 0, 0, picwidth, j stepy
Sleep dtime
Next j
根据扫描方向的不同,还有向上、向左、向右、水平平分和垂直平分等多种,其实现代码大致相仿。
2) 百叶窗显示方式
百叶窗显示方式,就如关闭百叶窗一样,图像被分成一条一条地显示出来。百页窗显示方式可分为垂直和水平两种形式。
垂直百叶窗显示的实现技巧是,首先将图像垂直等分为n部分,分n次完成每部分图像的向下扫描显示。但扫描显示时,依照差值扫描进行,即第i次显示i、i+n、...i+jn、...条扫描线,比如第1次显示1、9、17...条扫描线,第2次显示2、10、18...条扫描线,直到图像完整显示。
垂直百叶窗显示代码如下:
scanline = n
For i = 0 To (scanline - 1)
For j = i To picwidth Step scanline
dest.PaintPicture source.Picture, j, 0, 1,
picheight, j, 0, 1, picheight
Next j
Next i
实现水平百叶窗显示时,原理与上同,循环体代码修改如下即可:
dest.PaintPicture source.Picture, 0, j, picwidth, 1, 0, j, picwidth, 1
三、编写背景音乐程序代码
1)关闭音乐closemusic()
If Not mciwave.Mode = 524
Then mciwave.Command =″close″
2)播放音乐playmusic()
closemusic
mciwave.DeviceType = ″WaveAudio″
mciwave.FileName =App.Path + ″\music\″+ ″
tears.wav″ ′在此处可以将你喜爱的音乐文件加入
mciwave.Command=″Open″
mciwave.Command = ″Play″
3)音乐播放完后设置重播状态mciwave-Done(NotifyCode As Integer)
If firstflag Then firstflag = False
Timer2.Enabled = True
Timer2.Interval = 1000
4)定时器定时播放音乐Private Sub Timer2-Timer()
Timer2.Enabled=False
Playmusic
firstflag = True
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比