作者:金永涛
---- WINDOWS 95 的 桌 面 是 用 户 的 一 个 主 要 工 作 场 所, 如 果 你 能 使 这 个 桌 面 移 动 起 来 或 者 发 生 其 它 变 化, 将 是 一 种 别 具 一 格 屏 幕 特 技 效 果, 而 实 际 上 目 前 具 有 类 似 效 果 的 程 序 并 不 少 见, 比 如Microsoft PLUS! 中 提 供 的 一 种 屏 幕 保 护 程 序, 下 面 介 绍 在VB5.0 中 实 现 桌 面 变 化 特 技 的 基 本 原 理 和 具 体 操 作 过 程。
---- 一、 桌 面 变 化 的 实 质: 这 种 编 程 效 果 的 奥 妙 在 于, 它 不 是 使 真 正 的WINDOWS 95 桌 面 发 生 了 变 化, 而 是 启 动 了 一 个 具 有 黑 色 背 景 的 且 运 行 在 最 大 化 模 式 下 的 应 用 程 序, 在 这 个 程 序 中 复 制 了 一 张 和 桌 面 完 全 一 样 的 图 像, 覆 盖 在 整 个 桌 面 之 上, 通 过 一 些 特 殊 的 操 作 使 这 幅 图 像 在 黑 色 的 背 景 下 发 生 扭 曲、 移 动 等 动 作, 当 结 束 此 程 序 时, 自 然 恢 复 到 原 来 的 桌 面 状 态, 整 个 过 程 连 贯 进 行, 即 可 以 给 人 一 种 桌 面 发 生 变 化 的 假 象。
---- 二、 基 本 实 现 原 理: 首 先 必 须 通 过 有 关 的WINDOWS API 函 数, 取 得 桌 面 窗 口 的 句 柄, 然 后 把 此 桌 面 图 像 放 入 与 屏 幕 尺 寸 相 同 的 图 形 框 或 其 它 图 形 容 器 控 件 之 中, 然 后 以 此 为 图 像 源, 利 用 其 它 图 形 控 件 或 有 关 的 图 像 处 理 函 数, 灵 活 地 控 制 这 幅 图 像, 使 之 产 生 特 殊 的 屏 幕 效 果。 编 程 时 需 要 使 用 下 面 几 个API 函 数:
---- BitBlt: 一 个 较 常 见 的 图 像 处 理 函 数, 完 成 图 像 的 复 制 工 作;
---- GetDC: 获 得 窗 口 的 描 述 表 句 柄;
---- GetDesktopWindow: 返 回 桌 面 窗 口 句 柄;
---- ReleaseDC : 释 放 窗 口 描 述 表;
---- 具 体 的 参 数 格 式 及 使 用 方 法 见 后 面 的 程 序 代 码。
---- 这 里 还 需 要 使 用 一 个VB 内 部 函 数PaintPicture, 语 法 格 式:
PaintPicture Pic,destX,
destY,destWidth,destHeight,
scrX,scrY,scrWidth,scrHeight
其 中Pic: 为 图 片 对 象,
如 图 形 框Picture 等;
destX,destY: 目 标 图 像 位 置;
destWidth,destHeight: 目 标 图 像 尺 寸;
scrX,scrY: 原 图 像 的 裁 剪 坐 标;
scrWidth,scrHeight: 原 图 像 的 裁 剪 尺 寸;
---- 此 命 令 的 功 能 就 是 把 一 个 源 图 像 资 源 任 意 复 制 到 指 定 的 区 域, 其 功 能 相 当 于API 函 数 的BitBlt, 但 使 用 更 为 简 单。
---- 其 中 有 一 点 需 要 说 明, 在VB 通 常 有 两 种 图 形 控 件 可 以 使 用, 即 图 形 框PICTURE 及 图 像 框IMAGE, 其 中PICTURE 具 有 与 窗 体 通 用 的Hdc 句 柄 属 性, 所 以 可 方 便 的 进 行 图 像 复 制, 而IMAGE 最 大 的 优 点 是 具 有Stretch 伸 缩 性, 可 方 便 的 进 行 图 像 的 缩 放 处 理, 所 以 在 编 程 时 会 涉 及 到 把 图 像 从 图 形 框PICTURE 复 制 到 图 像 框IMAGE 的 动 作, 这 里 需 要 澄 清 图 形 框PICTURE 的 两 个 相 似 的 属 性 即PICTURE 及IMAGE, 比 如 一 般 可 用 下 面 的 命 令 在 图 形 框 中 装 入 图 像:
---- Picture1.picture=Loadpicture("c:\windows\setup.bmp")
---- 此 时 可 用 下 面 的 命 令 把 图 像 复 制 到 图 像 框 中:
---- Set Image1.picture=Picture1.Picture
---- 而 利 用 BitBlt 命 令 复 制 到Picture 中 的 图 像 则 不 是 它 的 Picture 属 性, 使 用 上 述 的 复 制 命 令 将 无 法 得 到 真 实 的 图 像, 而 必 须 使 用 其Image 属 性, AutoRedraw 属 性 可 以 引 起Image 改 变,Image 是 指 向 位 图 的 句 柄, 当AutoRedraw 为True 时, 对 象 的hDC 属 性 成 为 指 向 设 备 描 述 体 的 句 柄, 复 制 命 令 为: 本文章更多内容:1 - 2 - 3 - 4 - 下一页>> |