浙江福彩3d走势图
我們來自五湖四海,不為別的,只因有共同的愛好,為中國互聯網發展出一分力!

DrawDib函數組的使用

2013年04月28日03:40 閱讀: 1695 次

       Microsoft的針對與設備無關位圖(DIB位圖),在其WIN32 SDK的Multimedia中提供了一組繪制DIB位圖的高性能函數組──DrawDib函數組。DrawDib函數組是一組不依賴于圖形設備接口(GDI)函數,而直接操作顯存的函數組。它們支持8位、16位、24位和32位圖象深度的DIB。總的來說,DrawDib函數組類似于StretchDIBits函數,它們都提供了將圖象拉伸和抖動的功能,然而,DrawDib函數組還支持圖象的解壓、數據流以及更多的顯示適配器。在某些情況下,DrawDib函數組還具有更大的優越性。但是,在某些場合下,DrawDib函數組卻不能取代StretchDIBits函數。下面就DrawDib函數組和StretchDIBits函數使用的場合加以區別和說明:

    顏色信息表格式。DrawDib函數組只支持顏色信息表格式為DIB_RGB_COLORS格式的圖象,如果要顯示以DIB_PAL_COLORS或DIB_PAL_INDICES格式的圖象,則必須用StretchDIBits函數。
    光柵操作模式。DrawDib函數組只能使用SRCCOPY光柵操作模式,如果要求不僅僅使用SRCCOPY模式的話,只能用StretchDIBits函數。同樣地,如果要使用其他光柵操作,例如XOR,只能用StretchDIBits函數。
    視頻及動畫回放的質量。DrawDib函數組支持數據流應用,諸如視頻片和動畫序列,它比StretchDIBits函數提供了更高的圖象質量以及對回放過程的改進。
    顯示適配器。DrawDib函數組比StretchDIBits函數支持更多的顯示適配器。DrawDib函數組支持使用4位圖象深度提供16色調色板的VGA適配器,使用8位圖象深度提供256色調色板的SVGA適配器和使用16位、24位和32位圖象深度提供成千上萬種顏色的真彩色適配器。DrawDib函數組還使用了受限制的潛在能力提高了圖象在顯示適配器上的速度和質量。例如,當使用8位的顯示適配器時,DrawDib函數組有效地將真彩色圖象抖動為256色;同樣的,使用4位的顯示適配器時,它們也將8位深度的圖象抖動成4位。
    圖象拉伸。正如StretchDIBits一樣,DrawDib函數組用源矩形和目的矩形來控制一個圖象顯示的部分。可以通過改變源矩形和目的矩形的位置和大小來裁剪一幅圖象不需要的部分和拉伸某部分。如果顯示驅動不支持圖象拉伸,那么DrawDib函數組提供了比StretchDIBits函數更有效的拉伸能力。
    壓縮圖象。DrawDib函數組支持好幾種壓縮和解壓方法,其中包括游程編碼,JPEG,Cinepak,411YUV和Indeo™。
    DrawDib的操作

        通過使用DrawDibOpen函數初始化DrawDib函數組。DrawDibOpen負責裝載動態連接庫(DLL),申請內存資源,DrawDib設備環境(DC),并且維持初始化相關的設備環境計數。DrawDibOpen同時返回一個其它DrawDib函數所需要使用的新的DC句柄。

        當使用完DrawDib DC后,可以用DrawDibClose函數釋放它。DrawDibClose同時減少存取DLL的應用的計數。在應用程序中,DrawDibClose函數應是最后的DrawDib操作。

        可以創建任意多的DrawDib DC,也可以同時使用多個DrawDib DC來繪制幾幅位圖。在應用程序中可以創建多個不同性質的DrawDib DC,這樣就可以選擇最合適的DC設置。例如,在同一應用程序中,創建兩個不同的DrawDib DC,一個用來顯示圖象的正常分辨率,另一個用來顯示圖象的放大部分。

        為了更有效地運行,DrawDib函數組需要知道顯示適配器及其驅動的信息。顯示配置信息是在第一次使用包含DrawDib函數組的DLL時,對顯示適配器通過了一系列的測試之后得到的。DrawDib函數組的所有應用都要用到這個配置信息。可以通過調用DrawDibProfileDisplay函數來強制重新進行這些測試。

        通常,取得和保存顯示配置是一次性的事件。如果配置信息發現在這個系統中安裝了另一個顯示驅動時,DrawDib則重新進行測試。


 

[1] [2] [3] 下一頁

分享到: 更多
藍客門戶
©2001-2019 中國藍客聯盟 版權所有.
關于藍客聯盟歷史宗旨章程技術服務聯系我們藍客社區

浙江福彩3d走势图 男子网球冠军排行榜 表情金币客服 重庆时时彩赚钱方法 至尊人生电子游戏 北京pk10开奖结果 布莱顿配卡 巴塞罗那vs赫塔菲 英雄联盟无法连接服务器 金鸡报喜官网 西甲莱万特VS埃瓦尔