⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 83(1).txt

📁 VB文章集(含API、窗口、数据库、多媒体、系统、文件、等等)
💻 TXT
📖 第 1 页 / 共 2 页
字号:
在VB5.0中制作多媒体界面
作者:关永 张杰 
简 介: 由 于Visual Basic 具 有 易 学 易 用、 编 程 简 洁、 功 能 极 为 丰 富 等 诸 多 优 点, 因 此 拥 有 众 多 用 户。 许 多 用 户 在 运 用VB 编 程 时, 都 希 望 能 用VB 为 自 己 的 应 用 程 序 制 作 有 声、 有 色、 形 式 多 样、 引 人 入 胜 的 多 媒 体 界 面。 在 这 里 我 们 将 向 大 家 介 绍 一 种 简 单 实 用 的 多 媒 体 界 面 制 作 方 法, 希 望 它 能 对 大 家 编 程 起 到 一 定 的 借 鉴 作 用。 
---- 软 件 中 那 些 生 动 有 趣 的 多 媒 体 界 面, 往 往 会 使 用 户 对 该 软 件 产 生 深 刻、 良 好 的 印 象, 因 此, 用 户 界 面 是 一 个 应 用 程 序 非 常 重 要 的 部 分。 因 为 一 般 情 况 下 用 户 感 觉 不 到 幕 后 正 在 运 行 的 代 码, 所 以 无 论 设 计 者 花 多 少 时 间、 精 力 来 编 制 和 优 化 代 码, 应 用 程 序 给 用 户 的 印 象 仍 主 要 取 决 于 界 面 的 效 果。 

---- Visual Basic 5.0 是 微 软 公 司 最 新 推 出 的BASIC 语 言 编 程 环 境, 它 不 仅 具 有 强 大 的 计 算 和 数 据 处 理 能 力, 而 且 还 提 供 了 丰 富 的 多 媒 体 功 能。 利 用 这 些 多 媒 体 功 能 我 们 就 可 以 设 计 出 多 种 多 样 的 多 媒 体 用 户 界 面 了。 

---- 一 般 来 说 多 媒 体 界 面 可 由 四 部 分 组 成: 动 画、 声 音、 图 象、 文 字。 有 时 只 有 三 部 分: 图 象( 或 动 画)、 声 音 和 文 字。 

---- 下 面 我 们 将 结 合 一 个 实 例 来 向 大 家 介 绍 多 媒 体 界 面 的 制 作 方 法。 本 例 中 的 多 媒 体 界 面 由 动 画、 图 象、 背 景 音 乐 和 滚 动 显 示 的 文 字 四 部 分 组 成。 

---- 多 媒 体 界 面 显 示 效 果 描 述: 工 程 运 行 后, 屏 幕 背 景 显 示 为 黑 色, 在 屏 幕 中 间 适 当 位 置 显 示 一 幅 图 象, 在 此 图 象 右 上 角 适 当 位 置 连 续 重 复 播 放 动 画, 显 示 的 文 字 信 息 从 屏 幕 下 面 向 上 面 滚 动, 至 中 间 指 定 位 置 停 止 滚 动, 同 时 在 此 过 程 中 连 续 播 放 背 景 音 乐。 具 体 实 现 方 法 如 下。 

窗 体 和 控 件 的 设 计

---- 本 例 共 需 六 个 窗 体、 控 件, 各 窗 体 和 控 件 的 具 体 设 计 如 下: 
---- 1 . 所 需 创 建 的 窗 体 和 控 件. 编 号 窗 体 及 控 件 功 能 
1 Form1 窗 体 创 建 新 工 程, 由 此 窗 体 控 制 界 面 总 背 景 为 黑 色 
2 Picture1 控 件
(PictureBox 控 件) 在 此 控 件 中 显 示 一 幅 图 象 
3 Picture2 控 件
(PictureBox 控 件) 在 此 控 件 中 显 示 播 放 的 动 画 
4 MCI1 控 件
(MMControl 控 件) 利 用 此 控 件 连 续 播 放 背 景 音 乐 
5 MCI2 控 件
(MMControl 控 件) 利 用 此 控 件 连 续 播 放 动 画 
6 Timer1 控 件 利 用 此 控 件 显 示 滚 动 的 文 字 信 息, 并 控 制 动 画、 声 音 的 重 放 


---- 2 . 设 置 各 窗 体 和 控 件 的 属 性. 

---- 窗 体 及 控 件 属 性 设 置 值 含 义 
Form1 窗 体 BorderStyle 0-None 不 显 示Windows95 的 边 框 及 边 框 相 关 元 素. 
WindowState 2-Maximized 在 运 行 时, 将 窗 体 的 可 视 窗 口 最 大 化. 
Picture1 控 件 Appearance 0-Flat 设 置 控 件 的 显 示 风 格 为 平 面 视 觉 效 果. 
AutoRedraw True 允 许 自 动 重 绘 控 件 上 的 图 象、 文 字( 若 此 项 设 为False, 则 屏 幕 显 示 文 字 有 闪 烁 感). 
AutoSize True 自 动 调 整 控 件 大 小 以 显 示 全 部 要 显 示 内 容. 
Font 楷 体-GB2312 显 示 字 体: 楷 体, 样 式:Regular, 大 小:1 号 . 
Picture2 控 件 AutoSize True 自 动 调 整 控 件 大 小 以 显 示 全 部 要 显 示 内 容. 
MCI1 控 件 ( 名 称) MCI1 重 新 给MMControl 控 件 命 名. 
Visible False 将 控 件 隐 藏 起 来, 由 程 序 去 控 制 播 放. 
MCI2 控 件 ( 名 称) MCI2 重 新 给MMControl 控 件 命 名. 
Visible False 将 控 件 隐 藏 起 来, 由 程 序 去 控 制 播 放. 
Timer1 控 件 Interval 200 设 置 每 隔0.2 秒 发 生 一 次Timer1-timer 事 件, 当 然 此 项 设 置 也 可 在 事 件 代 码 中 用 语 句 Timer1.Interval = 200 来 设 定. 


---- 注: 表 中 未 列 出 的 各 窗 体 和 控 件 的 属 性 值 维 持 原 窗 体 和 控 件 创 建 时 的 缺 省 值。 

---- 4 . 调 整 各 窗 体 和 控 件 的 尺 寸, 并 将 各 窗 体 和 控 件 调 整 到 适 当 位 置. 

事 件 及 相 应 代 码 的 设 计

---- 本 例 中 涉 及 到 的 事 件 有 三 个, 它 们 分 别 是:Form_Load 事 件、Picture1_MouseUp 事 件 和Timer1_timer 事 件。 其 中Form_Load 事 件 主 要 完 成 对 数 组 及 变 量 进 行 初 始 化, 对 所 要 读 取 文 件 的 盘 符 路 径 进 行 处 理, 并 控 制 多 媒 体 控 件MCI1、MCI2 分 别 播 放 背 景 音 乐 和 动 画;Picture1_MouseUp 事 件 主 要 完 成 关 闭、 退 出 工 程 的 任 务, 即 在 工 程 运 行 时, 当 鼠 标 处 于 画 面Picture1 范 围 内 时, 按 鼠 标 左 键, 则 关 闭 多 媒 体 控 件MCI1、MCI2, 并 卸 载 退 出 工 程;Timer1_timer 事 件 主 要 用 来 完 成 背 景 音 乐 和 动 画 的 连 续 循 环 重 放, 并 控 制 要 显 示 的 文 字 信 息 向 上 滚 动 显 示。 窗 体 的 声 明 及 各 事 件 的 代 码 分 别 如 下: 
---- 1 . 窗 体 的 通 用 声 明.
Option Explicit ' 强 制 进 行 变 量 声 明.
Dim CurY, CurY1, Temp As Single, s1(1 To 3), s2(1 To 3) As String 

---- 2 . Form_Load 事 件 代 码 及 注 释.

Private Sub Form_Load()
' 变 量DiskPathName 用 于 存 放 应 用 程 序
 所 在 的 盘 符 和 路 径. 
    Dim DiskPathName As String, x, y As Single
' 根 据WINDOWS 所 设 置 的 分 辨 率 重 
新 调 整 各 窗 口 和 控 件 的 位 置.
    Move 0, 0, Screen.Width, Screen.Height
    x = (ScaleWidth - Picture1.Width) / 2:
 y = (ScaleHeight - Picture1.Height) / 2
    Picture1.Move x, y
    Picture2.Move Picture2.Left + x, Picture2.Top+y
s1(3) = " 程 序 功 能:": s2(3) = 
"VB5.0 多 媒 体 界 面 演 示"     ' 要 滚 动 显 示 的 文 字 信 息.
    S1(2) = " 设 计 单 位:": s2(2) = " 中 国 矿 大 北 京 研 究 生 部"
    s1(1) = " 设 计 者:": s2(1) = " 关   永     张   杰"
    ' 保 存Picture1 画 面 的 起 始 坐 标.
    CurY = Picture1.CurrentY: CurY1 = CurY: Temp = 8000 - Picture1.CurrentY
    DiskPathName = App.Path
' 判 断 应 用 程 序 所 在 路 径 是 否 为 根 目 录,
 若 为 根 目 录 则 去 掉 路 径 中 的 "\" .
' 例 如 当 应 用 程 序 处 于A 盘 根 目 录 时,
 字 符 串 表 达 式DiskPathName + "\demo.bmp" 的
' 值 为"a:\\demo.bmp", 即 路 径 中 出 现 二 个 反 斜 杠,
 这 是 不 允 许 的。
    If  Right(DiskPathName, 1) = "\"  Then    
       DiskPathName = Left(DiskPathName, Len(DiskPathName) - 1)
    End If
Picture1.Picture = LoadPicture(DiskPathName + "\demo.bmp")   
 ' 装 入 要 显 示 的 图 象.
Form1.BackColor = QBColor(0) 
' 设 置Form1 的 背 景 为 黑 色.
MCI1.filename = DiskPathName + "\demo.wav"         
    '  打 开 并 播 放 背 景 音 乐.
    MCI1.Command = "Open"
    MCI1.Command = "Play"
MCI2.DeviceType = "AVIVideo" 
                            '  打 开 并 播 放 动 画.
    MCI2.filename = DiskPathName + "\demo.avi"
MCI2.hWndDisplay = Picture2.hWnd       
       ' 让 动 画 在Picture2 中 进 行 播 放.
    MCI2.Command = "Open"
    MCI2.Command = "Play"
End Sub


---- 3 . Picture1_MouseUp 事 件 代 码 及 注 释. 

---- Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) ' 判 断 是 否 按 下 了 鼠 标 的 左 键, 是 则 关 闭 多 媒 体 控 件MCI1、MCI2, 并 卸 载 退 出 工 程. 

  If Button = vbLeftButton Then
     MCI1.Command = "Stop"
     MCI1.Command = "Close"
     MCI2.Command = "Stop"
     MCI2.Command = "Close"
     Unload Me
  End If
End Sub



---- 4 .Timer1_timer 事 件 代 码 及 注 释. 

---- 实 现 文 字 信 息 向 上 滚 动 显 示 的 方 法: 首 先 在 屏 幕 最 下 向 显 示 要 显 示 的 文 字 信 息, 然 后 等 待Timer1_timer 事 件 发 生( 由 于 本 例 中Timer1 控 件 的Interval 属 性 被 设 为200, 所 以 每 隔0.2 秒 就 会 发 生 一 次Timer1_timer 事 件), 每 发 生 一 次 该 事 件, 我 们 就 用Picture1.Cls 命 令 清 除 上 一 次 屏 幕 显 示 文 字 内 容, 再 向 上 调 整 本 屏 要 显 示 内 容 的 起 始 纵 坐 标( 横 坐 标 不 变), 接 着 显 示 本 屏 内 容, 依 此 类 推, 直 至 所 要 显 示 的 文 字 信 息 移 动 到 中 间 指 定 位 置 为 止, 从 而 形 成 一 种 滚 动 的 视 觉 效 果。 

---- 关 于 滚 动 显 示 的 速 度, 我 们 可 以 通 过 改 变Timer1 控 件 的Interval 属 性 的 值 加 以 控 制,Interval 属 性 的 值 越 小, 则 滚 动 显 示 的 速 度 越 快; 反 之 则 越 慢。 当 然 也 可 以 通 过 改 变CurY1 的 值( 即 改 变 两 屏 间 文 字 的 纵 坐 标 差) 来 改 变 显 示 速 度, 但 是 后 者 所 能 调 整 的 范 围 是 有 限 的。 

Private Sub Timer1_Timer()
  Dim I As Integer
  ' 保 存 本 屏 要 显 示 文 字 信 息 的 起 始 纵 坐 标, 
以 便 能 对 下 一 屏 要 显 示 内 容 进 行 准 确 定 位。
  CurY = CurY1
  If  MCI1.Mode = mciModeStop Then     
  ' 如 背 景 音 乐 播 放 完 毕, 则 继 续 重 复 播 放。
     MCI1.From = 0
     MCI1.Command = "Play"
  End If
  If  MCI2.Mode = mciModeStop Then      
     ' 如 动 画 播 放 完 毕, 则 继 续 重 复 播 放。
      MCI2.From = 0
      MCI2.Command = "Play"
  End If
  '  变 量Temp 的 值 应 根 据 所 显 示 的 背 景 图 象
 的 大 小 和 要 显 示 的 文 字 信 息 量 及 文 字 的 显
  '  示 位 置 来 进 行 选 取。
  If  Temp > 3000  Then          
                   '  停 止 向 上 滚 动 显 示 的 条 件。
     Picture1.Cls          
                       '  清 除Picture1 画 面 的 文 字 信 息。
     For I = 1 To 3
         ' 用Picture1.CurrentY 来 设 定Picture1.Print 语 句 
所 要 输 出 内 容 的 纵 坐 标。
         Picture1.CurrentY = 8000 - CurY
         Temp = Picture1.CurrentY
         ' 设 置 要 显 示 文 字 的 颜 色 为 粉 色.
         Picture1.ForeColor = QBColor(13): Picture1.Print "  "; s1(I); " "; 
         ' 设 置 要 显 示 文 字 的 颜 色 为 绿 色.
         Picture1.ForeColor = QBColor(10): Picture1.Print s2(I)
         ' 设 置 要 显 示 文 字 的 行 间 距.
         CurY = CurY + 800
     Next I
     ' 改 变 下 一 屏 要 显 示 文 字 的 起 始 纵 坐 标,
 即 两 屏 间 文 字 的 纵 坐 标 差。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -