您的位置: 首页-> 电脑文摘-> 程序设计-> Basic/VB类-> 正文

VB设计动画时钟
作者佚名 来源InterNet 加入时间:2003-7-24
摘 要: 由 于GIF 格 式 动 画 文 件 具 有 小 巧、 制 作 方 便 等特 点, 因 此 在 网 上 得 到 广 泛 应 用, 但 遗 憾 的 是VB 中 的 多 媒体 控 件 却 无 法 播 放 它, 这 给 我 们 设 计VB 应 用 程 序 带 来 了 不便。 在 此 我 们 向 大 写 介 绍 一 种 利 用 网 络 浏 览 器IE 实 现 在VB 中 播 放GIF 动 画 的 方 法。 并 给 出 一 个 简 捷、 实 用 的“ 画 中 画” 滚 动 显 示 程 序。 

  GIF 动 画 格 式 文 件 是 一 种 动 态 存 储 的 图 形 格 式 文 件。在 内 容 相 同 的 条 件 下, 与 其 它 格 式 文 件 相 比, 由 于 它 占 用的 存 储 空 间 少, 且 制 作 手 段 成 熟, 可 浏 览 的 软 件 工 具 也 很多, 所 以 倍 受 设 计 者 的 青 睐。 然 而 令 人 遗 憾 的 是, 在Visual Basic 中, 无 论 是 多 媒 体 控 件MCI、MCIWnd, 还 是Animation 控 件, 甚至 调 用Windows API 函 数 都 无 法 播 放GIF 格 式 的 动 画 文 件。 造 成这 一 现 象 的 原 因 在 于GIF 动 画 格 式 文 件 不 是VB 多 媒 体 控 件所 支 持 的 视 频 格 式 文 件(VB 多 媒 体 控 件 所 支 持 的 视 频 格 式文 件 主 要 有:AVI 格 式、MOV 格 式、FLI 格 式、FLC 格 式 等)。 以 往我 们 的 解 决 方 法 是: 首 先 利 用 一 些 格 式 转 换 工 具, 比 如GIF Movie Gear 将GIF 格 式 的 动 画 文 件 转 换 为AVI 格 式 的 动 画 文 件,然 后 再 用 多 媒 体 控 件MCI 和MCIWnd 进 行 播 放。 但 这 种 做 法 主要 存 在 以 下 两 个 缺 陷: 

  1 . 所 形 成 的AVI 格 式 动 画 文 件 太 大( 常 常 是GIF 格 式文 件 的 几 十 倍), 从 而 影 响 系 统 的 效 率。 

  2 . 所 形 成 的AVI 格 式 动 画 文 件 往 往 带 有 比 较 复 杂 的调 色 板 信 息, 所 以 当 程 序 在 播 放 这 种AVI 格 式 动 画 文 件 时,如 果 还 兼 有 动 态 显 示 的 文 字 和 图 象 信 息, 则 整 个 画 面 就会 产 生 抖 动 和 闪 烁, 从 而 使 显 示 效 果 大 受 影 响。 

  为 解 决 这 个 问 题, 我 们 在 此 提 出 一 个 全 新 的 处 理 方案 — — — 通 过 在VB 中 调 用IE 浏 览 器 来 实 现GIF 动 画 的 播 放,实 际 使 用 表 明: 效 果 甚 好。 

  一、 浏 览 器IE 和WebBrowser 控 件 

  众 所 周 知, 运 行VB6.0 需 要 安 装 浏 览 器IE4.0 或 以 上 版本, 当IE4.0 和VB6.0 安 装 完 成 后, 我 们 便 可 以 在VB6.0 中 使 用IE 所 提 供 的WebBrowser 控 件 播 放GIF 动 画 了。 具 体 方 法 如 下: 

  1 . 由 于WebBrowser 控 件 并 不 是VB 的 基 本 控 件, 因 此 在使 用 该 控 件 之 前 必 须 先 将 其 装 入 工 具 箱 中。 装 入 方 法: 在工 具 箱 中 点 击 鼠 标 右 键 → 选 中“ 部 件” → 复 选Microsoft Internet Controls → 然 后 点 击“ 确 定” 键 即 可。 

  2 . 选 取WebBrowser 控 件( 注 意 不 同 版 本IE 的WebBrowser 控件 的 图 标 是 不 同 的,IE4.0 中 的WebBrowser 控 件 的 图 标 是 一 个地 球;IE3.0 是 一 个 搜 索 图 标。), 添 加 到 窗 体 的 相 应 位 置 上。 

  3 . 设 计 相 应 代 码, 通 过 使 用WebBrowser 控 件 的Navigate 方 法 播 放GIF 动 画 文 件。 

  Navigate 方 法 的 语 法 格 式 为: 
 

  WebBrowser 控 件 名.Navigate URL 
[Flags,][TargetFrameName,][PostData,][Headers] 

  WebBrowser 控 件 支 持 的 主 要 方 法 有: 
 

GoBack — — — 回 退 到 上 一 屏。 
GoForward — — — 进 入 到 下 一 屏。 
GoHome — — — 回 家。 即 回 到 主 页。 
Stop — — — 停 止 导 航。 
Refresh — — — 刷 新。 
Navigate — — — 导 航。 

  WebBrowser 控 件 所 响 应 的 事 件: 

  BeforeNavigate 事 件 — — — 在 开 始 导 航 前 发 生。 一 般 在此 获 取 完 整 的URL 字 符 串。 

  WebBrowser 控 件 最 主 要 的 参 数: 

  URL — — — 获 得 导 航 用 的 标 准URL 字 符 串。 例 如: 它 能将”www.MicroSoft.Com” 自 动 翻 译 为”http:// www.MicroSoft.Com”.URL 是Uniform Resource Locator 的 缩 写, 是 在Internet 的WWW 服 务 程 序 上用 于 指 定 信 息 位 置 的 表 示 方 法。 

  下 面 我 们 结 合 一 个 实 例 进 行 具 体 说 明。 这 是 一 个“ 画 中 画” 滚 动 显 示 应 用 程 序, 界 面 由 循 环 滚 动 显 示 的 文 字、背 景 图 象、 和 播 放 的GIF 动 画 三 部 分 组 成。 其 中 循 环 显 示 的文 字 用 透 明 的Label 控 件 实 现; 动 画 用WebBrowser 控 件 实 现 播放。 

  ① 所 需 控 件: 

  本 程 序 需 要 一 个PictureBox 控 件、 一 个Label 控 件、 一 个WebBrowser 控 件、 一 个Timer 控 件。 

  ② 各 控 件 的 属 性 设 置 如 下: 
 

控件名称   属性   设置值  含  义 
Label1控件 BackStyle 0 设置Label1控件的背景是透明的。 
Timer1控件 Interval 200 设置每0.2秒发生一次Timer1_Timer()事件。 

  ③ 各 事 件 的 相 应 代 码 如 下: 

首 先 定 义 一 个 变 量, 以 便 用 它 来 存 放 需 要 滚 动 显 示 的字 符 串。 

Dim aa As String 

在Form_Load() 事 件 中 进 行 初 始 化 工 作, 具 体 代 码 如 下: 

Private Sub Form_Load() 
  Picture1.Picture = LoadPicture(App.Path & "\demo1.jpg") 
  WebBrowser1.Navigate (App.Path & "\new1.gif") 

  aa = " 这 是 一 个 利 用 网 络 浏 览 器IE 中WebBrowser 控 件 制作 的GIF 动 画 播 放 程 序。 " 
 

  Label1.ForeColor = QBColor(11) 
  Label1.FontSize = 18 
  Label1.Caption = aa 
End Sub 
◆ 在Timer1_Timer()事件中,每隔0.2秒改变 
   一次Label1控件的Caption属性值。 
Private Sub Timer1_Timer() 
  ' 让字符串头尾相接,以便形成滚动效果。 
  aa = Mid(aa, 2, 59) + Mid(aa, 1) 
  Label1.Caption = aa 
End Sub 
◆ 在Picture1_Click()事件中,卸载并退出应用程序。 
Private Sub Picture1_Click() 
  Unload Me 
End Sub 

  ④ 调 整 各 控 件 至 适 当 的 大 小 和 位 置。 

  二、 注 意 事 项 及 附 加 说 明 

  1 . 不 同 版 本IE 的Microsoft Internet Controls 所 包 含 的 控件 及 控 件 数 量 是 不 同 的。 设 计 者 在 使 用 时 必 须 注 意 这 一点。 

  ① WINDOWS95 所 带 的IE3.0 的Microsoft Internet Controls 只 包含 一 个 控 件, 即WebBrowser 控 件。 

  ② 中 文 版IE4.0CN 的Microsoft Internet Controls 包 含 两 个 控件, 即WebBrowser 控 件 和DownUp 控 件。 

  ③ 英 文 版IE4.01 的Microsoft Internet Controls 包 含 两 个 控件, 即WebBrowser 控 件 和ShellFolderViewOC 控 件。 

  2 . 实 际 上, 在VB5.0 中 也 可 以 使 用WebBrowser 控 件 播 放GIF 动 画, 但 如 果VB5.0 是 安 装 在WINDOWS95 下, 那 么 必 须 安 装IE3.0 或IE4.0; 如 果 是 安 装 在WINDOWS98 下, 则 可 不 必( 因 为WINDOWS98 自 带IE4.0)。 然 而 需 要 特 别 声 明 的 是: 无 论 是VB5.0 的 联 机 手册, 还 是 其 它 帮 助 文 件, 均 未 介 绍 有 关WebBrowser 控 件 的 资料( 因 为WebBrowser 控 件 不 是Visual Basic 的 控 件, 而 是 由IE 提 供的。)。 读 者 如 要 详 细 了 解 这 方 面 的 情 况, 请 查 阅Visual Studio 98 中 的MSDN。 具 体 步 骤 如 下: 

  从Microsoft Developer Network 中 选 择MSDN Library Visual Studio 6.0, 查 找 关 于Reusing the WebBrowser Control 的 主 题, 位 置 在Internet Explorer:Platfrom SDK。 从 哪 可 以 找 到 有 关WebBrowser 控 件 的 详 尽资 料。 

  3 . 注 意 你 的 发 布 权 限。 由 于 受 到 软 件 知 识 产 权 的影 响, 任 何 软 件 都 有 它 的 发 行 权 限。 在Visual Basic 中, 你 可以 自 由 地 发 布 任 何 由Visual Basic 创 建 的 应 用 程 序、 部 件、DLL、Active X 控 件、 各 种 媒 体 文 件、 示 例 应 用 程 序( 在\Samples 子 目 录 下)以 及 系 统 第 一 次 安 装Visual Basic 时 最 初 复 制 到Visual Basic 主目 录 的\Icons 子 目 录、\Graphics 子 目 录、\ODBC 子 目 录 下 的 任 何文 件。 但 除 此 之 外 的 其 它 软 件 一 般 都 不 允 许 你 发 布。 例 如:你 的 应 用 程 序 中 包 含 有 对 网 络 浏 览 器IE 的 引 用, 那 么“ 应用 程 序 安 装 向 导” 在 创 建 你 的 安 装 程 序 时, 就 会 因 试 图 发布 无 权 发 布 的 软 件 而 出 错。 

  错 误 原 因: 因 为 我 们 无 权 用Visual Basic 的“ 应 用 程 序安 装 向 导” 来 发 布 网 络 浏 览 器IE。 

  那 么 既 然 我 们 不 能 在VB 的 应 用 程 序 中 发 布 网 络 浏 览器IE, 又 怎 么 样 保 证 应 用 程 序 中 的 引 用 能 得 以 实 现 呢 ? 

  解 决 办 法 ①: 如 果 用 户 的 计 算 机 上 已 经 安 装 了 网 络浏 览 器IE, 那 么 直 接 安 装 你 开 发 的 应 用 程 序 即 可。 

  解 决 办 法 ②: 如 果 用 户 的 计 算 机 上 还 未 安 装 网 络 浏览 器IE, 那 么 只 要 在 运 行 你 的 应 用 程 序 之 前, 安 装 上 网 络浏 览 器IE 即 可。 

  需 要 说 明 的 是, 上 述 解 决 方 法 具 有 普 遍 性, 如 果 你的 应 用 程 序 在 发 布 时 遇 到 类 似 的 问 题( 例 如: 你 的 应 用 程序 中 包 含 有 对Word97、Excel 97 的 引 ), 均 可 照 此 处 理。 
程 序 名:Sec-Time.vbp 
程序类别:完整的VB程序 
功 能:显示一个动画时钟,该时针随着每一秒而动态变化。 

程序说明 

  1.如何画时钟表盘上的所有直线元素? 
  用Load命令建立原始Line控制的14个拷贝(因为表盘有12个点和时、分、秒共15个Line),该控制数组每一个实例的端点坐标属性设置为每条线在时钟表盘上的适当位置。这些拷贝中大多数只放置一次,而3个Line控制每秒钟更新一次,产生时钟指针移动的感觉。 
  注意:在应用程序代码中并没有直接擦除任何一条线。当我们改变每一个Line控制的端点时,每一根针在移动时擦除和重画的所有技术工作都由VB来处理。 

  2.如何修改时针的形状? 
  通过调整代码中的属性设置,可以改变时钟的形状。例如:通过改变每一个Line控制的Borderwidth属性设置,可以建立更细或更粗的线。 

  3.计时器的Interval(间距)属性设置 
  计时器的Interval属性设置为100,即为1/10秒。 

程序的编写与执行 

  (1)新建工程 
  先新建一个工程(工程类型为标准EXE),然后用“工具箱”中的工具加入一个Timer1(计时器)和line1(直线),其index(指针)分别设置为空和0。然后双击Form1窗体,输入源代码。 

  (2)程序源代码 
  Option Explicit 
  DefDbl A-Z 
  Private Sub Form_Load() 
  timer1.Interval = 100 
  Width = 4000 
  Height = 4000 
  Left = Screen.Width \ 2 - 2000 
  Top = (Screen.Height - Height) \ 2 
  End Sub 
  Private Sub Form_Resize() 
  Dim i, Angle 
  Static flag As Boolean 
  If flag = False Then 
    flag = True 
  For i = 0 To 14 
  ’画出表盘12个点和时、分、秒共15个LINE 
    If i > 0 Then Load Line1(i) 
    Line1(i).Visible = True 
    Line1(i).BorderWidth = 5 
    Line1(i).BorderColor = RGB(0, 128, 0) ’设置LINE的粗细和颜色 
    Next i 
   End If 
  For i = 0 To 14 
    Scale (-1, 1)-(1, -1) 
    Angle = i * 2 * Atn(1) / 3 
    Line1(i).X1 = 0.9 * Cos(Angle) 
    Line1(i).Y1 = 0.9 * Sin(Angle) 
    Line1(i).X2 = Cos(Angle) 
    Line1(i).Y2 = Sin(Angle) 
    Next i 
   End Sub 
  Private Sub timer1_Timer() 
  Const HH = 0 
  Const MH = 13 
  Const SH = 14 
  Dim Angle 
  Static LS 
  If Second(Now) = LS Then Exit Sub 
  LS = Second(Now) 
  Angle = 0.5236 * (15 - (Hour(Now) + Minute(Now) / 60))’设置时针 
  Line1(HH).X1 = 0 
  Line1(HH).Y1 = 0 
  Line1(HH).X2 = 0.3 * Cos(Angle) 
  Line1(HH).Y2 = 0.3 * Sin(Angle) 
  Angle = 0.1047 * (75 - (Minute(Now) + Second(Now) / 60))’设置分针 
  Line1(MH).X1 = 0 
  Line1(MH).Y1 = 0 
  Line1(MH).X2 = 0.7 * Cos(Angle) 
  Line1(MH).Y2 = 0.7 * Sin(Angle) 
  Angle = 0.5236 * (75 - Second(Now)) 
  ’设置秒针 
  Line1(SH).X1 = 0 
  Line1(SH).Y1 = 0 
  Line1(SH).X2 = 0.8 * Cos(Angle) 
  Line1(SH).Y2 = 0.8 * Sin(Angle) 
  form1.Caption = Str(Now()) 
  '窗口显示精确的日期和数字化的时间 
  End Sub 

  (3)程序的编译和执行 
  点击VB“运行”菜单中的“启动”或“全面编译”命令,即可对程序编译并运行! 
  注:上述程序在中文Windows 98和 VB5.0中文企业版下调试通过。



[文章录入员:lpc]

相关文章
  • VB图像处理之图像的亮度对比度调整
  • VB实现文件数据对SQL Server上传下载
  • 用VB6.0编写磁盘格式化程序
  • VB图像处理之图像的色彩纠正
  • VB图像处理之铅笔画算法和木雕算法
  • VB图像处理之几个常用滤镜的实现
  • VB图像处理之二次线性插值的应用
  • VB图像处理之像素的获取和输出
  • VB实现图像在数据库的存储与显示
  • 利用VB6.0开发基于IIS的应用程序
  • 相关软件:
  • VB上机考试综合应用题选讲
  • vb另外两套教案
  • VB光盘资料库
  • VB、C快速进阶 2.0
  • Web 对象 VB参考
  • VB编程技巧集(中)--站长推荐
  • VB编程技巧集(上)--站长推荐
  • VB6循序渐进教程
  • Page 对象 VB 参考
  • Outlook VB 参考
  • ::PCBOOKCN'ADS::


    ::Basic/VB类::
    C/C++/VC
    C++Builder
    Basic/VB类
    Delphi/Pascal
    Java编程
    FORTRAN
    其它
    ::阅读排行::
    ·VB学习一点通
    ·VB设计动画时钟
    ·在Visual Basic 6....
    · 用VB6.0编写手机短信发送 ...
    ·VB实现文件数据对SQL Ser...
    ·利用Visual Basic操作...
    ·VB实现图像在数据库的存储与显示
    ·用Visual Basic6.0...
    ·Visual Basic代码优化...
    · VB中实现“无标题”窗体的移动...