亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

您現(xiàn)在的位置: > 技術沙龍 > 程序設計 > VB > VB設計動畫時鐘
  • 相關軟件
    >VB設計動畫時鐘 創(chuàng)建者:webmaster 更新時間:2005-07-02 01:40

    摘 要: 由 于GIF 格 式 動 畫 文 件 具 有 小 巧、 制 作 方 便 等特 點, 因 此 在 網(wǎng) 上 得 到 廣 泛 應 用, 但 遺 憾 的 是VB 中 的 多 媒體 控 件 卻 無 法 播 放 它, 這 給 我 們 設 計VB 應 用 程 序 帶 來 了 不便。 在 此 我 們 向 大 寫 介 紹 一 種 利 用 網(wǎng) 絡 瀏 覽 器IE 實 現(xiàn) 在VB 中 播 放GIF 動 畫 的 方 法。 并 給 出 一 個 簡 捷、 實 用 的“ 畫 中 畫” 滾 動 顯 示 程 序。 

      GIF 動 畫 格 式 文 件 是 一 種 動 態(tài) 存 儲 的 圖 形 格 式 文 件。在 內(nèi) 容 相 同 的 條 件 下, 與 其 它 格 式 文 件 相 比, 由 于 它 占 用的 存 儲 空 間 少, 且 制 作 手 段 成 熟, 可 瀏 覽 的 軟 件 工 具 也 很多, 所 以 倍 受 設 計 者 的 青 睞。 然 而 令 人 遺 憾 的 是, 在Visual Basic 中, 無 論 是 多 媒 體 控 件MCI、MCIWnd, 還 是Animation 控 件, 甚至 調(diào) 用Windows API 函 數(shù) 都 無 法 播 放GIF 格 式 的 動 畫 文 件。 造 成這 一 現(xiàn) 象 的 原 因 在 于GIF 動 畫 格 式 文 件 不 是VB 多 媒 體 控 件所 支 持 的 視 頻 格 式 文 件(VB 多 媒 體 控 件 所 支 持 的 視 頻 格 式文 件 主 要 有:AVI 格 式、MOV 格 式、FLI 格 式、FLC 格 式 等)。 以 往我 們 的 解 決 方 法 是: 首 先 利 用 一 些 格 式 轉(zhuǎn) 換 工 具, 比 如GIF Movie Gear 將GIF 格 式 的 動 畫 文 件 轉(zhuǎn) 換 為AVI 格 式 的 動 畫 文 件,然 后 再 用 多 媒 體 控 件MCI 和MCIWnd 進 行 播 放。 但 這 種 做 法 主要 存 在 以 下 兩 個 缺 陷: 


      1 . 所 形 成 的AVI 格 式 動 畫 文 件 太 大( 常 常 是GIF 格 式文 件 的 幾 十 倍), 從 而 影 響 系 統(tǒng) 的 效 率。 


      2 . 所 形 成 的AVI 格 式 動 畫 文 件 往 往 帶 有 比 較 復 雜 的調(diào) 色 板 信 息, 所 以 當 程 序 在 播 放 這 種AVI 格 式 動 畫 文 件 時,如 果 還 兼 有 動 態(tài) 顯 示 的 文 字 和 圖 象 信 息, 則 整 個 畫 面 就會 產(chǎn) 生 抖 動 和 閃 爍, 從 而 使 顯 示 效 果 大 受 影 響。 


      為 解 決 這 個 問 題, 我 們 在 此 提 出 一 個 全 新 的 處 理 方案 ? ? ? 通 過 在VB 中 調(diào) 用IE 瀏 覽 器 來 實 現(xiàn)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 事 件 ? ? ? 在 開 始 導 航 前 發(fā) 生。 一 般 在此 獲 取 完 整 的URL 字 符 串。 


      WebBrowser 控 件 最 主 要 的 參 數(shù): 


      URL ? ? ? 獲 得 導 航 用 的 標 準URL 字 符 串。 例 如: 它 能將”www.MicroSoft.Com” 自 動 翻 譯 為”http:// www.MicroSoft.Com”.URL 是Uniform Resource Locator 的 縮 寫, 是 在Internet 的WWW 服 務 程 序 上用 于 指 定 信 息 位 置 的 表 示 方 法。 


      下 面 我 們 結 合 一 個 實 例 進 行 具 體 說 明。 這 是 一 個“ 畫 中 畫” 滾 動 顯 示 應 用 程 序, 界 面 由 循 環(huán) 滾 動 顯 示 的 文 字、背 景 圖 象、 和 播 放 的GIF 動 畫 三 部 分 組 成。 其 中 循 環(huán) 顯 示 的文 字 用 透 明 的Label 控 件 實 現(xiàn); 動 畫 用WebBrowser 控 件 實 現(xiàn) 播放。 


     ?、?所 需 控 件: 


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


     ?、?各 控 件 的 屬 性 設 置 如 下: 
     


    控件名稱   屬性   設置值  含  義 
    Label1控件 BackStyle 0 設置Label1控件的背景是透明的。 
    Timer1控件 Interval 200 設置每0.2秒發(fā)生一次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 = " 這 是 一 個 利 用 網(wǎng) 絡 瀏 覽 器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 


     ?、?調(diào) 整 各 控 件 至 適 當 的 大 小 和 位 置。 


      二、 注 意 事 項 及 附 加 說 明 


      1 . 不 同 版 本IE 的Microsoft Internet Controls 所 包 含 的 控件 及 控 件 數(shù) 量 是 不 同 的。 設 計 者 在 使 用 時 必 須 注 意 這 一點。 


      ① 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 的 聯(lián) 機 手冊, 還 是 其 它 幫 助 文 件, 均 未 介 紹 有 關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 . 注 意 你 的 發(fā) 布 權 限。 由 于 受 到 軟 件 知 識 產(chǎn) 權 的影 響, 任 何 軟 件 都 有 它 的 發(fā) 行 權 限。 在Visual Basic 中, 你 可以 自 由 地 發(fā) 布 任 何 由Visual Basic 創(chuàng) 建 的 應 用 程 序、 部 件、DLL、Active X 控 件、 各 種 媒 體 文 件、 示 例 應 用 程 序( 在\Samples 子 目 錄 下)以 及 系 統(tǒng) 第 一 次 安 裝Visual Basic 時 最 初 復 制 到Visual Basic 主目 錄 的\Icons 子 目 錄、\Graphics 子 目 錄、\ODBC 子 目 錄 下 的 任 何文 件。 但 除 此 之 外 的 其 它 軟 件 一 般 都 不 允 許 你 發(fā) 布。 例 如:你 的 應 用 程 序 中 包 含 有 對 網(wǎng) 絡 瀏 覽 器IE 的 引 用, 那 么“ 應用 程 序 安 裝 向 導” 在 創(chuàng) 建 你 的 安 裝 程 序 時, 就 會 因 試 圖 發(fā)布 無 權 發(fā) 布 的 軟 件 而 出 錯。 


      錯 誤 原 因: 因 為 我 們 無 權 用Visual Basic 的“ 應 用 程 序安 裝 向 導” 來 發(fā) 布 網(wǎng) 絡 瀏 覽 器IE。 


      那 么 既 然 我 們 不 能 在VB 的 應 用 程 序 中 發(fā) 布 網(wǎng) 絡 瀏 覽器IE, 又 怎 么 樣 保 證 應 用 程 序 中 的 引 用 能 得 以 實 現(xiàn) 呢 ? 


      解 決 辦 法 ①: 如 果 用 戶 的 計 算 機 上 已 經(jīng) 安 裝 了 網(wǎng) 絡瀏 覽 器IE, 那 么 直 接 安 裝 你 開 發(fā) 的 應 用 程 序 即 可。 


      解 決 辦 法 ②: 如 果 用 戶 的 計 算 機 上 還 未 安 裝 網(wǎng) 絡 瀏覽 器IE, 那 么 只 要 在 運 行 你 的 應 用 程 序 之 前, 安 裝 上 網(wǎng) 絡瀏 覽 器IE 即 可。 


      需 要 說 明 的 是, 上 述 解 決 方 法 具 有 普 遍 性, 如 果 你的 應 用 程 序 在 發(fā) 布 時 遇 到 類 似 的 問 題( 例 如: 你 的 應 用 程序 中 包 含 有 對Word97、Excel 97 的 引 ), 均 可 照 此 處 理。 
    程 序 名:Sec-Time.vbp 
    程序類別:完整的VB程序 
    功 能:顯示一個動畫時鐘,該時針隨著每一秒而動態(tài)變化。 


    程序說明 


      1.如何畫時鐘表盤上的所有直線元素? 
      用Load命令建立原始Line控制的14個拷貝(因為表盤有12個點和時、分、秒共15個Line),該控制數(shù)組每一個實例的端點坐標屬性設置為每條線在時鐘表盤上的適當位置。這些拷貝中大多數(shù)只放置一次,而3個Line控制每秒鐘更新一次,產(chǎn)生時鐘指針移動的感覺。 
      注意:在應用程序代碼中并沒有直接擦除任何一條線。當我們改變每一個Line控制的端點時,每一根針在移動時擦除和重畫的所有技術工作都由VB來處理。 


      2.如何修改時針的形狀? 
      通過調(diào)整代碼中的屬性設置,可以改變時鐘的形狀。例如:通過改變每一個Line控制的Borderwidth屬性設置,可以建立更細或更粗的線。 


      3.計時器的Interval(間距)屬性設置 
      計時器的Interval屬性設置為100,即為1/10秒。 


    程序的編寫與執(zhí)行 


     ?。?)新建工程 
      先新建一個工程(工程類型為標準EXE),然后用“工具箱”中的工具加入一個Timer1(計時器)和line1(直線),其index(指針)分別設置為空和0。然后雙擊Form1窗體,輸入源代碼。 


     ?。?)程序源代碼 
      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()) 
      '窗口顯示精確的日期和數(shù)字化的時間 
      End Sub 


     ?。?)程序的編譯和執(zhí)行 
      點擊VB“運行”菜單中的“啟動”或“全面編譯”命令,即可對程序編譯并運行! 
      注:上述程序在中文Windows 98和 VB5.0中文企業(yè)版下調(diào)試通過。

    相關文章
    本頁查看次數(shù):