-
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
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比