在Visual Basic 中 利 用Image 和Timer 控 件 能 很 方 便 地 实 现 动 画。 本 文 将 介 绍Visual Basic 动 画 编 程 的 基 本 原 理 和 实 现 三 种 不 同 类 型 动 画 的 编 程 技 术。 一、 基 本 原 理 ---- 动 画 是 一 种 运 动 的 模 拟, 其 实 现 方 法 是 在 屏 幕 上 快 速 地 显 示 一 组 相 关 的 图 象。 因 此 实 现 动 画 的 基 础 是 图 象 的 显 示 和 使 图 象 快 速、 定 时 地 移 动 或 变 化。---- 在Visual Basic 中, 用LoadPicture 函 数 将BMP、ICO 和WMF 格 式 的 图 象 文 件 装 入 内 存, 并 将 函 数 返 回 值 赋 予Image 对 象 的Picture 属 性, 便 能 在Image 对 象 中 显 示 图 象。 使 图 象 移 动 或 变 化 的 基 本 方 法 有 三 种, 即:
---- 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, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。 . 四、 多 帧 位 移 动 画 ---- 多 帧 位 移 动 画 是 最 复 杂 的 动 画, 综 合 了 无 位 移 动 画 和 单 帧 位 移 动 画 的 特 点。 自 然 界 的 运 动 大 多 数 都 具 有 多 帧 位 移 的 特 点, 如 小 鸟 的 飞 翔, 在 小 鸟 位 置 的 移 动 的 同 时, 其 翅 膀 也 在 扇 动。 实 现 多 帧 位 移 动 画 需 要 在Timer 事 件 过 程 中 同 时 处 理Image 对 象 的 图 象 更 替 和 位 置 移 动。---- 下 面 是 小 鸟 飞 翔 的 例 子。 程 序 启 动 时, 在 窗 体 中 显 示 一 只 小 鸟, 用 鼠 标 左 键 点 击 它, 则 小 鸟 将 开 始 扇 翅 飞 翔, 如 碰 到 窗 体 的 边 界, 小 鸟 将 改 变 飞 翔 方 向; 再 用 鼠 标 左 键 点 击 小 鸟, 则 小 鸟 将 停 止 飞 翔。 位 图 文 件bird1.bmp~ bird4.bmp 分 别 表 现 了 小 鸟 飞 翔 时, 其 翅 膀 的 不 同 位 置, 它 们 存 放 在 当 前 工 程 所 在 的 目 录 中。 ---- 在 需 显 示 动 画 的 窗 体(Form1) 中 设 置Image 对 象Image1 和Timer 对 象Timer1, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。 . 五、 缩 放 动 画 ---- 气 球 的 膨 胀 或 缩 小 是 缩 放 动 画 的 典 型 例 子。 在Timer 事 件 过 程 中 修 改Image 对 象 的Width 和/ 或Height 属 性, 便 可 实 现 缩 放 动 画。 但 如 果 要 表 现 物 体 的 同 心 缩 放, 则 还 应 同 时 还 需 移 动Image 对 象。---- 下 面 是 模 拟 气 球 在 空 中 缩 放( 同 心) 的 例 子。 程 序 启 动 时, 在 窗 体 中 显 示 一 只 气 球, 用 鼠 标 左 键 点 击 它, 则 气 球 将 开 始 膨 胀, 如 碰 到 窗 体 的 边 界, 气 球 将 缩 小, 缩 小 到 原 来 大 小 时, 又 将 膨 胀; 再 用 鼠 标 左 键 点 击 气 球, 则 气 球 将 停 止 缩 放。 位 图 文 件Balloon.bmp 存 放 在 当 前 工 程 所 在 的 目 录 中。 ---- 在 需 显 示 动 画 的 窗 体(Form1) 中 设 置Image 对 象Image1 和Timer 对 象Timer1, 并 按 下 表 设 置 它 们 的 属 性, 未 列 出 的 属 性 使 用 缺 省 值。 对象 |