• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    讓圖片無跡可尋

    發布: 2007-7-01 21:48 | 作者: admin | 來源: | 查看: 48次 | 進入軟件測試論壇討論

    領測軟件測試網

    提要:在我們的軟件開發中,常常需要在界面上放置很多圖片,這往往會造成可執行文件大小的大幅度增長。本文通過VB組件,將所需要的圖片封裝起來,從而減小可執行文件大小的目的。

     

    關鍵字:資源、資源文件、VB組件、封裝

     

           程序員在開發軟件的時候,常常需要很多圖片來美化程序界面,工具欄,菜單等控件都會用到大量的圖片,按照常規的方法,我們一般通過VB開發環境直接導入需要的圖片,如BMP或圖標文件;這樣做的好處是方便簡單,但也帶來了大幅度增長主執行文件大小的麻煩。另一種方法是通過loadpicture函數動態加載指定目錄下的圖片文件,但把圖片文件和主程序一起發布后很容易被誤刪。那么,有沒有什么方法來防止這些情況的發生呢?

     

           當然有。

     

           資源是指可供我們使用的存儲在計算機內的數據。包括字符串資源、圖標資源、游標資源、位圖資源以及自定義資源(可以是任意類型的文件,如.exe、.doc等類型的文件)。資源文件則是指用來存放各種資源的文件,資源文件源文件的擴展名為.rc,他是一個文本文件,使用任何文本編輯器都可以編輯。通過資源編譯器編譯后的文件擴展名是.res,簡單的說,這個.res文件能把所有指定的資源全部包括進來,更形象一點,就像一個壓縮文件包括很多個文件夾或文件一樣。

     

           VB6.0為我們提供了一個非常好用的工具——資源編輯器。該編輯器不需要我們寫.rc文件而通過一種更直接更友好的可視化操作完成資源的編輯,保存后會自動生成.res文件。

     

           資源文件生成后,我們創建一個ActiveX dll組件,并把該資源文件添加進來。然后,通過相關的函數把資源導出供主程序調用。

     

           下面是整個操作過程。

    1、  新建一個ActiveX DLL工程,工程名為:prjPictureRes

    2、  依次打開:外接程序->外接程序管理器->VB6.0資源編輯器,雙擊,確定。此時,在工具欄上出現一個資源管理器的按鈕。

    3、  點擊“VB資源編輯器”按鈕,出現如下的資源編輯器窗口。

                                                     圖1

    4、  按圖1所示,添加四個圖標和一個位圖,點擊“保存”,將生成一個擴展名為.res的資源文件,我們將該文件命名為Myres.res。同時,工程資源管理器會出現一個“相關文檔”的節點,如圖2:

    圖2

    5、  在類模塊class1中,我們寫如下代碼將相應的資源導出。

    Public Function LoadRes(resID As Integer, ImgType As Integer) As IPictureDisp

        Set LoadRes = LoadResPicture(resID, ImgType)

    End Function

    其中:參數resID為資源號,ImgType為圖片類型(位圖、圖標或光標),這兩個參數傳入LoadResPicture()函數,下面,對LoadResPicture()簡單講解。

    語法:

                   LoadResPicture(index as integer, format as integer) as IpictureDisp

    參數:

            index: 必需的。一個整數或字符串,它用來指定資源文件中數據的標識符 (ID) 。ID標識符為 1 的資源保留給應用程序的圖標。

    Format: 必需的。一個數值或常數,如下列“設置值”中所描述的,指定返回數據的格式:            

       

                  常數                                  值          描述

                  VbResBitmap                     0            位圖資源

    vbResIcon                         1            圖標資源

    vbResCursor                      2            光標資源

    6、  編譯成prjPictureRes.dll文件。至此,ActiveX DLL文件已經完成。

    7、  接下來做一個測試工程,新建一個EXE工程,在窗體上放一個工具欄,用來顯示.DLL文件中的圖標;一個ImageList控件;一個圖像控件(Image),用來顯示.dll文件中的位圖。界面如圖3。

                                                                   圖3

    8、  將剛才完成的prjPictureRes.dll組件通過“工程->引用”的方法加入到工程中。

    9、  在窗體的Load事件中寫如下代碼:

    Private Sub Form_Load()

        Dim objRes As prjPictureRes.Class1

        Set objRes = New prjPictureRes.Class1

       

        Dim aImage As ListImage

       

        ´設置圖標的高度和寬度

        ImageList1.ImageHeight = 24

        ImageList1.ImageWidth = 24

       

        ´往圖像列表控件中添加圖標(101、102、103、104為資源編號,下同)

        Set aImage = ImageList1.ListImages.Add(, , objRes.LoadRes(101, vbResIcon))

        Set aImage = ImageList1.ListImages.Add(, , objRes.LoadRes(102, vbResIcon))

        Set aImage = ImageList1.ListImages.Add(, , objRes.LoadRes(103, vbResIcon))

        Set aImage = ImageList1.ListImages.Add(, , objRes.LoadRes(104, vbResIcon))

       

        ´與工具欄關聯

        Set Toolbar1.ImageList = ImageList1

       

        ´添加工具欄按并設置圖標

        Dim aButton As Button

        Set aButton = Toolbar1.Buttons.Add(, , "新建", , 1)

        aButton.ToolTipText = "新建"

        Set aButton = Toolbar1.Buttons.Add(, , "打開", , 2)

        aButton.ToolTipText = "打開"

        Set aButton = Toolbar1.Buttons.Add(, , "", tbrSeparator)

        Set aButton = Toolbar1.Buttons.Add(, , "保存", , 3)

        aButton.ToolTipText = "保存"

        Set aButton = Toolbar1.Buttons.Add(, , "另存為", , 4)

        aButton.ToolTipText = "另存為..."

       

        ´設置工具欄其他屬性

        Toolbar1.Style = tbrFlat ´以Flat形式顯示

       

        ´設置Image1控件屬性

        Image1.Stretch = True ´圖片自適應

       

        ´將位圖資源加載到Image1控件中(105為資源編號)

        Set Image1.Picture = objRes.LoadRes(105, vbResBitmap)

        ´釋放資源

        Set aImage = Nothing

        Set aButton = Nothing

        Set objRes = Nothing

    End Sub

     

    至此,大功告成,一起來欣賞一下我們的最終作品(圖4)。

     

     


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>