VB5.0中基于桌面的屏幕技巧

2008-02-23 06:56:33来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

---- 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 属 性 成 为 指 向 设 备 描 述 体 的 句 柄, 复 制 命 令 为:

---- Set Image1.Picture = Picture1.Image

---- 同 样, 在 针 对 上 述 的Picture 两 种 不 同 的 装 入 图 像 方 法, 使 用 图 像 重 写 命 令PaintPicture 也 需 要 两 种 不 同 的 方 法:

---- PaintPicture Picture1.Image,x,y,Width,Height

---- PaintPicture Picture1.Picture,x,y,Width,Height

---- 三、 一 个 演 示 程 序 的 编 制 过 程

---- 创 建 一 个 新 的 工 程, 在 窗 体 Form1 上 放 置 一 个 图 形 框 Picture1 和 一 个 图 像 框Image1, 置Form1 及 Picture1 的 AutoReadraw 属 性 为True, 置 form1 的BorderStyle 属 性 为 None, 背 景BackColor 为 黑 色, 如 果 想 要 任 务 条 安 全 地 参 加 特 技 运 动, 最 好 使 程 序 运 行 在 最 大 化 模 式, 即 置Form1 的 WIndowState 属 性 为Maximized。 然 后 进 行API 函 数 说 明, 可 通 过API Viewer 直 接 获 得, 把 其 放 入 一 个BAS 模 块 文 件 中, 也 可 以 直 接 放 在 窗 体Form1 代 码 文 件 的General 段 中, 但 此 时 在 函 数 前 面 必 须 加 上Private 关 键 字, 详 见 下 面 的API 说 明, 最 后 文 后 程 序 代 码 填 入 有 关 的 事 件 之 中。 此 演 示 程 序 运 行 之 后 可 实 现 下 面 的 桌 面 特 技 效 果, 任 何 时 候 单 击 图 形 框 可 强 制 退 出 程 序:

---- 1. 桌 面 逐 渐 缩 小: 图 形 的 放 大 缩 小 使 用Image 控 件 最 为 方 便, 实 现 此 特 技 的 关 键 处 就 是 需 要 把 桌 面 图 形 传 递 到 图 像 框IMAGE 之 中, 然 后 置Stretch 属 性 为 真, 逐 渐 修 改IMAGE 的 尺 寸 即 可 使 桌 面 放 大 或 缩 小;

---- 2. 随 机 位 置 显 示 桌 面: 此 效 果 主 要 使 用PaintPicture 命 令, 通 过 随 机 修 改 目 标 图 形 的 起 始 坐 标, 把 桌 面 图 像 写 到 屏 幕 的 随 机 位 置;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:将包含有Null结尾的字符串转换为VB字符串

下一篇:关闭屏幕保护功能,改变屏保等待时间