999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式系統基于DirectDraw的圖像處理

2008-12-31 00:00:00
電腦知識與技術 2008年24期

摘要:用DirectDraw技術進行圖像顯示,速度快不閃爍。文中就DirectDraw的原理作了簡要介紹,并給出在嵌入式導航系統中使用DirectDraw進行視頻圖像顯示的實例。

關鍵詞:DirectDraw;blt;DIB;SkinControl

中圖分類號:TP317.4文獻標識碼:A文章編號:1009-3044(2008)24-1192-02

Embedded System Images Display with DirectDraw

HU Bin

(The 38th Institute of China Electronic and Technology Corp, Hefei 230001, China)

Abstract: Displaying computer images with DirectDraw has advantages of fast processing and no flickering. This paper introduces the brief principle of DirectDraw and presents an example using DirectDraw in an embedded system.

Key words: DirectDraw; blt; DIB; SkinControl

1 引言

嵌入式設備圖形界面的開發由于硬件條件的限制,對實時性的要求非常突出。如果仍然使用Windows圖形設備接口(GDI)來顯示圖片,將大大限制圖形界面的顯示速度。

目前比較流行的圖形操作方式包括:GDI、OpenGL、DirectDraw三種方式,DirectDraw是DirectX基于COM接口的一個組件,它是DirectX的基石,DirectX的其它組件都是建立在它的基礎之上的。DirectDraw允許直接操作顯存、硬件位塊轉移、硬件覆蓋和翻面支持。

2 DirectDraw基本要素

DirectDraw通過對顯存中位圖的直接訪問,加速了對硬件和軟件圖形的實時處理,它提供了一種與設備無關的方法,以獲得訪問特定的顯示設備高級特性的能力。

2.1 設備無關位圖

在DirectX中使用設備無關位圖(DIB)作為最基本的圖形文件格式。DIB本質上是一個描述圖像各種信息的文件,包括圖像的尺寸、使用的顏色個數及顏色值,還有每個像素的顏色數據等。

2.2 表面(Surface)

在用DirectDraw繪圖時,我們首先將圖形數據放入創建的緩沖區,再進行轉換、拉伸、拷貝等操作,最后顯示緩沖區中的圖形數據,這些緩沖區就稱為表面。表面被分為主表面和離屏表面,主表面是顯示內存的一部分,主表面一般情況下是存在兩個表面,一個可見的,一個不可見的。不可見的表面被稱為后臺緩存(Back Buffering),在程序執行頁面翻轉(Page Flipping)的時候,后臺緩存就稱為了可見的表面,而原先可見的表面就稱為了后臺緩存。這樣做是為了完成平滑、不閃爍的圖像快速切換。

另一種表面稱為離屏表面(Off_screen Surface),它始終是不可見的,是用戶自定義的一個可變大小的存儲緩沖區,它有助于表面之間的切換。

2.3 位塊傳送(bit block transfer)

是類似CDC類(設備描述表)的BitBlt()功能的函數,典型的Blt操作是將離屏表面的內容拷貝到一個后備緩沖區,而簡單的說,Blt操作就是將一個表面的內容拷貝到另一個表面中。Blt還支持透明拷貝,就是指表面中某一像素在Blt過程中不被拷貝,這中方式我們將在后面的應用中大量使用,它可以幫我們完成不規則按鈕、圖標的實現。

2.4 色彩鍵碼

DirectDraw可以把某種顏色或某個范圍的顏色指定為一個顏色值,這個顏色值是由DDCOLORKEY結構說明的,DDCOLORKEY結構說明如下:

tpedef stuct _DDCOLORKEY {

DWORD dwColorSpaceLowValue; //顏色范圍的低端

DWORD dwColorSpaceHighValue; //顏色范圍的高端

} DDCOLORKEY;

當我們對表面進行拷貝時,色彩鍵碼指定的顏色將不被拷貝。

3 DirectDraw的層次結構

DirectDraw提供完成以下關鍵任務的工具:管理多圖面;直接訪問顯示存儲器;頁面翻轉;后臺緩沖區;調色板管理;剪裁。

DirectDraw通過一個設備相關的抽象層來訪問硬件設備,DirectDraw盡可能地利用了硬件的加速特性,如果硬件不支持某特性,DirectDraw會使用HEL將該特性進行軟件仿真。其層次結構如圖1所示。

DirectDraw通過硬件抽象層(HAL)提供設備無關操作。HAL是由設備生產廠家提供的特定設備接口,DirectDraw直接對顯示硬件進行操作,應用程序不直接與HAL交換數據,而是與HAL所提供的基礎結構交換數據。

當硬件設備不支持某種特性時,DirectDraw會嘗試軟件仿真,仿真的功能是由硬件仿真層提供的。而這兩種方式對于應用程序來說都是透明的,應用程序無需關心是硬件仿真還是軟件仿真。

圖1

圖2

4 基于DirectDraw的編程實例

在我們設計的車載綜合信息平臺上,圖形化界面的操作都使用了DirectDraw來實現,對于應用程序層大量運用的按鈕、列表框、菜單、編輯框、滑動條等Windows控件,如果我們只使用標準控件,那么對于應用程序的美觀將大打折扣。此時,我們運用了DirectDraw來對這些控件進行封裝,結合自己設計的圖片完成了對控件的圖形化封裝,我們稱之為SkinControl。在設計過程中,我們盡量保證具有圖形化界面的控件與Windows標準控件具有相同或相近的接口定義,使得程序員在后面的開發中大大減少了工作。

以SkinButton(具有圖形界面的按鈕控件)為例,首先定義接口設置按鈕的背景圖片、圖標、文字等基本信息,然后在OnPaint函數中將這些用戶自定義的圖片利用DirectDraw方式繪制到顯示表面中,以實現按鈕的圖形化界面。下面我們給出程序設計中DirectDraw運用的流程圖如圖2所示。

實際上,不僅在控件表面的處理我們運用了DirectDraw技術,在整個程序中我們都運用了DirectDraw來繪圖而放棄使用GDI繪圖,因為在嵌入式設備上,圖形顯示的流暢度要求是非常高的,而我們使用的顯卡又支持需要的特性。實踐證明,使用DirectDraw實現圖像顯示,圖像刷新速度快,畫面無閃爍。

5 結束語

本文針對DirectDraw的特性討論了其在嵌入式開發中的應用,面對嵌入式系統硬件環境不高,且顯示要求又很高的實際情況,運用DirectDraw技術繪圖是可以提高系統顯示效果的有效方式。同時用DirectDraw將Windows控件進行圖形化封裝,不僅可以增加應用程序美觀,還可以提高程序員編程效率。

參考文獻:

[1] 武永康. DirectDraw原理與API參考[M].北京:清華大學出版社,2000.

主站蜘蛛池模板: 日韩在线影院| 亚洲高清在线天堂精品| 亚洲精品另类| 久久黄色毛片| 熟妇人妻无乱码中文字幕真矢织江| 婷婷色一二三区波多野衣| 色窝窝免费一区二区三区| 国产成人一区| 国产特级毛片| 中文字幕无码av专区久久| 国产丝袜丝视频在线观看| 国产成人精品亚洲日本对白优播| 国产亚洲精品无码专| 人妻丰满熟妇αv无码| 自慰网址在线观看| 亚洲无码视频一区二区三区| 精品三级网站| 一区二区偷拍美女撒尿视频| 韩国v欧美v亚洲v日本v| 福利在线一区| 91香蕉视频下载网站| 日韩资源站| 国产乱码精品一区二区三区中文| 欧美一级片在线| 久久9966精品国产免费| 亚洲欧美一区在线| 亚洲国产欧美国产综合久久| 国产精品成人一区二区| 成人夜夜嗨| 国产Av无码精品色午夜| 日韩无码一二三区| 一本大道无码高清| 国产美女精品一区二区| 国产永久免费视频m3u8| 色成人综合| 亚洲精品麻豆| 免费一级全黄少妇性色生活片| 日韩欧美中文| 免费人成视频在线观看网站| 亚洲精品你懂的| 无码内射在线| 欧美另类一区| 国产真实乱人视频| 黄色网页在线播放| 美女免费精品高清毛片在线视| 欧美激情二区三区| 欧美国产在线精品17p| 国产精品深爱在线| 国产日韩丝袜一二三区| 亚洲资源站av无码网址| 国产香蕉在线| 久久伊人操| 久久天天躁夜夜躁狠狠| 波多野结衣无码AV在线| 国产主播在线观看| 日韩精品一区二区三区免费| 免费在线播放毛片| 国产喷水视频| 任我操在线视频| 欧美在线综合视频| 国产伦精品一区二区三区视频优播| 蝴蝶伊人久久中文娱乐网| 亚洲人精品亚洲人成在线| 欧洲免费精品视频在线| av免费在线观看美女叉开腿| 国产理论最新国产精品视频| 91香蕉视频下载网站| 制服丝袜亚洲| 91精品国产无线乱码在线| 亚洲日韩国产精品综合在线观看| 亚洲一欧洲中文字幕在线| 久热中文字幕在线观看| 亚洲天天更新| 国产簧片免费在线播放| 88国产经典欧美一区二区三区| 国产网友愉拍精品| 免费a在线观看播放| 毛片在线看网站| 久久国产乱子| 免费a在线观看播放| 四虎影视永久在线精品| 国产精品亚洲欧美日韩久久|