VB 程序设计

10个成员

Visual Basic动画编程技术

发表于 2016-12-19 3523 次查看

在Visual Basic 中 利 用Image 和Timer 控 件 能 很 方 便 地 实 现 动 画。 本 文 将 介 绍Visual Basic 动 画 编 程 的 基 本 原 理 和 实 现 三 种 不 同 类 型 动 画 的 编 程 技 术。

一、 基 本 原 理

---- 动 画 是 一 种 运 动 的 模 拟, 其 实 现 方 法 是 在 屏 幕 上 快 速 地 显 示 一 组 相 关 的 图 象。 因 此 实 现 动 画 的 基 础 是 图 象 的 显 示 和 使 图 象 快 速、 定 时 地 移 动 或 变 化。

---- 在Visual Basic 中, 用LoadPicture 函 数 将BMP、ICO 和WMF 格 式 的 图 象 文 件 装 入 内 存, 并 将 函 数 返 回 值 赋 予Image 对 象 的Picture 属 性, 便 能 在Image 对 象 中 显 示 图 象。 使 图 象 移 动 或 变 化 的 基 本 方 法 有 三 种, 即:

  1. 用Image 对 象 的Move 方 法 移 动 图 象, 其Left 和Top 属 性 指 示 了Image 对 象 的 当 前 左 上 角 位 置;
  2. 调 用LoadPicture 函 数 装 载 不 同 的 图 象, 并 赋 给Image 对 象 的Picture 属 性, 将 在 对 象 中 显 示 不 同 的 图 象, 即 实 现 图 象 变 化;
  3. 修 改Image 对 象 的Width 和/ 或Height 属 性 可 以 缩 放 图 象。
---- 使 用Timer 控 件 可 以 实 现 定 时 控 制。Timer 对 象 的Interval 属 性 设 置 了 定 时 间 隔, 即 调 用Timer 事 件 过 程 的 时 间 间 隔。 在Timer 事 件 过 程 中 处 理 控 制Image 对 象 的 移 动 或 变 化, 便 能 实 现 动 画。Timer 对 象 的Interval 值 决 定 了 动 画 的 变 化 或 移 动 速 度, 其 单 位 是 毫 秒(1/1000 秒)。

---- Timer 对 象 的Enabled 属 性 决 定 了Timer 事 件 是 否 有 效。 设 置Enabled 属 性 为True 将 启 动Timer 事 件( 如 启 动 动 画); 为False 则 将 使Timer 事 件 无 效( 如 停 止 动 画)。

二、 无 位 移 动 画

---- 无 位 移 动 画 是 指 动 画 对 象 不 移 动, 但 图 象 不 断 变 化, 其 典 型 例 子 是 翻 书。 实 现 无 位 移 动 画 的 方 法 是, 设 置 好Image 对 象 和Timer 对 象 后, 在Timer 事 件 过 程 中 调 用 调 用LoadPicture 函 数 装 载 不 同 的 图 象, 并 赋 予Image 对 象 的Picture 属 性, 使 对 象 中 显 示 不 同 的 图 象, 即 实 现 图 象 变 化。

---- 下 面 是 翻 书 动 画 的 例 子。 程 序 启 动 时, 在 窗 体 中 显 示 一 本 翻 开 的 书, 用 鼠 标 左 键 点 击 书, 则 将 开 始 翻 书; 再 用 鼠 标 左 键 点 击 书, 则 书 将 停 止 翻 动。 位 图 文 件book1.bmp~ book4.bmp 分 别 表 现 了 翻 书 时, 正 在 翻 的 书 页 的 不 同 位 置, 它 们 存 放 在 当 前 工 程 所 在 的 目 录 中。

---- 在 需 显 示 动 画 的 窗 体(Form1) 中 设 置Image 对 象Image1 和Timer 对 象Timer1, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。

.
.
.

三、 单 帧 位 移 动 画

---- 单 帧 位 移 动 画, 是 指 同 一 幅 图 象 的 位 置 不 断 变 化 而 形 成 的 动 画, 其 典 型 实 例 时 云 彩 被 风 吹 动。 编 制 单 帧 位 移 动 画 的 方 法 是 在Timer 事 件 过 程 中 调 用Image 对 象 的Move 方 法 来 移 动 图 象。

---- 下 面 是 云 彩 移 动 的 例 子。 程 序 启 动 时, 在 窗 体 中 显 示 一 朵 云, 用 鼠 标 左 键 点 击 云, 则 云 彩 将 开 始 飘 动, 如 碰 到 窗 体 的 边 界, 云 彩 将 改 变 移 动 方 向; 再 用 鼠 标 左 键 点 击 云, 则 云 将 停 止 移 动。 位 图 文 件cloud.bmp 存 放 在 当 前 工 程 所 在 的 目 录 中。

---- 在 需 显 示 动 画 的 窗 体(Form1) 中 设 置Image 对 象Image1 和Timer 对 象Timer1, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。

.
.
.

---- 注 意, 云 彩 碰 到 边 界 而 反 向 移 动, 是 通 过 改 变DetaX%、 DetaY% 的 符 号 来 实 现 的。

四、 多 帧 位 移 动 画

---- 多 帧 位 移 动 画 是 最 复 杂 的 动 画, 综 合 了 无 位 移 动 画 和 单 帧 位 移 动 画 的 特 点。 自 然 界 的 运 动 大 多 数 都 具 有 多 帧 位 移 的 特 点, 如 小 鸟 的 飞 翔, 在 小 鸟 位 置 的 移 动 的 同 时, 其 翅 膀 也 在 扇 动。 实 现 多 帧 位 移 动 画 需 要 在Timer 事 件 过 程 中 同 时 处 理Image 对 象 的 图 象 更 替 和 位 置 移 动。

---- 下 面 是 小 鸟 飞 翔 的 例 子。 程 序 启 动 时, 在 窗 体 中 显 示 一 只 小 鸟, 用 鼠 标 左 键 点 击 它, 则 小 鸟 将 开 始 扇 翅 飞 翔, 如 碰 到 窗 体 的 边 界, 小 鸟 将 改 变 飞 翔 方 向; 再 用 鼠 标 左 键 点 击 小 鸟, 则 小 鸟 将 停 止 飞 翔。 位 图 文 件bird1.bmp~ bird4.bmp 分 别 表 现 了 小 鸟 飞 翔 时, 其 翅 膀 的 不 同 位 置, 它 们 存 放 在 当 前 工 程 所 在 的 目 录 中。

---- 在 需 显 示 动 画 的 窗 体(Form1) 中 设 置Image 对 象Image1 和Timer 对 象Timer1, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。

.
.
.

五、 缩 放 动 画

---- 气 球 的 膨 胀 或 缩 小 是 缩 放 动 画 的 典 型 例 子。 在Timer 事 件 过 程 中 修 改Image 对 象 的Width 和/ 或Height 属 性, 便 可 实 现 缩 放 动 画。 但 如 果 要 表 现 物 体 的 同 心 缩 放, 则 还 应 同 时 还 需 移 动Image 对 象。

---- 下 面 是 模 拟 气 球 在 空 中 缩 放( 同 心) 的 例 子。 程 序 启 动 时, 在 窗 体 中 显 示 一 只 气 球, 用 鼠 标 左 键 点 击 它, 则 气 球 将 开 始 膨 胀, 如 碰 到 窗 体 的 边 界, 气 球 将 缩 小, 缩 小 到 原 来 大 小 时, 又 将 膨 胀; 再 用 鼠 标 左 键 点 击 气 球, 则 气 球 将 停 止 缩 放。 位 图 文 件Balloon.bmp 存 放 在 当 前 工 程 所 在 的 目 录 中。

---- 在 需 显 示 动 画 的 窗 体(Form1) 中 设 置Image 对 象Image1 和Timer 对 象Timer1, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。

对象
属性
设置值
Image1
Picture
...(工程文件所处路径)\Balloon.bmp
.
.
.

 

发表回复
你还没有登录,请先登录注册