Graphics Device Interface

基本介紹

  • 中文名:圖像設備接口
  • 外文名:Graphics Device Interface
  • 新增功能:漸變的畫刷
  • 下載地址::http://dl.360safe.com/
  • 子系統:GDI+
基本介紹,新增功能,圖片漏洞,

基本介紹

GDI+是WindowsXP中的一個子系統,它主要負責在顯示螢幕和列印設備輸出有關信息,它是一組通過C++類實現的應用程式編程接口
顧名思義,GDI+是以前版本GDI的繼承者,出於兼容性考慮,WindowsXP仍然支持以前版本的GDI,但是在開發新應用程式的時候,開發人員為了滿足圖形輸出需要應該使用GDI+,因為GDI+對以前的Windows版本中GDI進行了最佳化,並添加了許多新的功能。
作為圖形設備接口的GDI+使得應用程式開發人員在輸出螢幕和印表機信息的時候無需考慮具體顯示設備的細節,他們只需調用GDI+庫輸出的類的一些方法即可完成圖形操作,真正的繪圖工作由這些方法交給特定的設備驅動程式來完成,GDI+使得圖形硬體和應用程式相互隔離.從而使開發人員編寫設備無關的應用程式變得非常容易。

新增功能

(1)漸變的畫刷(GradientBrushes)
GDI+允許用戶創建一個沿路徑或直線漸變的畫刷,來填充外形(shapes),路徑(paths),區域(regions),漸變畫刷同樣也可以畫直線、曲線、路徑,當你用一個線形畫刷填充一個外形(shapes)時,顏色就能夠沿外形逐漸變化。
(2)基數樣條函式(CardinalSplines)
GDI+支持基數樣條函式,而GDI不支持。
基數樣條是一組單個曲線按照一定的順序連線而成的一條較大曲線。樣條由一系列點指定,並通過每一個指定的點。由於基數樣條平滑地穿過組中的每一個點(不出現尖角),因而它比用直線連線創建的路徑更精確。下面是分別使用兩種方法創建的圖形,一個使用基數樣條,一個使用直線。
(3)持久路徑對象(PersistentPathObjects)
在GDI中,路徑屬於設備描述表(DC),畫完後路徑就會被破壞。在GDI+中,繪圖工作由Graphics對象來完成,你可以創建幾個與Graphics分開的路徑對象,繪圖操作時路徑對象不被破環,這樣你就可以多次使用同一個路徑對象畫路徑了。
(4)變形和矩陣對象(Transformations&MatrixObject)
GDI+提供了矩陣對象,一個非常強大的工具,使得編寫圖形的旋轉、平移、縮放代碼變得非常容易。一個矩陣對象總是和一個圖形變換對相聯繫起來,比方說,路徑對象(PATH)有一個Transform方法,它的一個參數能夠接受矩陣對象的地址,每次路徑繪製時,它能夠根據變換矩陣繪製。下面的圖形是一個圖形變換前後的例子,變換按照先縮放後旋轉完成。
(5)可伸縮區域(ScalableRegions)
GDI+在區域(regions)方面對GDI進行了改進,在GDI中,Regions存儲在設備坐標中,對Regions唯一可進行圖形變換的操作就是對區域進行平移。而GDI+用世界坐標存儲區域(Regions),允許對區域進行任何圖形變換(譬如如圖所示的縮放),圖形變換以變換矩陣存儲,下面例子是一個區域變換前後的例子(縮放、旋轉、平移)
(6)AlphaBlending(混合)
你可能會注意到上面顯示的圖形,紅色未平移區域與變換後區域有一部分交叉區域,這一部分形成的夢幻效果就是由GDI+支持的AlphaBlending(混合)實現的,利用alpha融合,你可以指定填充顏色的透明度,透明顏色與背景色相互融合,填充色越透明,背景色顯示越清晰,下圖所示的四個橢圓被填充了同樣的顏色,但由於擁有不同的透明度而呈現不同的顯示效果。
(7)多種圖像格式支持.
圖像在圖形界面程式中占有舉足輕重的地位,GDI+除了支持BMP等GDI支持的圖形格式外,還支持JPEG(JointPhotographicExpertsGroup)、GIF(GraphicsInterchangeFormat)、PNG(ExchangeableImageFile)、TIFF(TagImageFileFormat)等圖像格式,你可以直接在程式中使用這些圖片檔案,而無需考慮它們所用壓縮算法。
(8)其它。
GDI+還將支持其它技術,譬如重新著色、顏色校正、元數據、圖形容器,也許這些功能我們會在將來的WindowsXP或者MicrosoftVisualStudio。Net中看到.
3.編程模式的改變DeviceContexts(設備描述表),Handles(句柄),和GraphicsObjects(圖形對象)
如果你曾經使用過GDI編寫過應用程式,你肯定對設備描述表(DC)的概念非常熟悉,設備描述表是Windows使用的一個數據結構,用於存儲具體設備能力和與如何在設備上重繪一些項目的有關屬性信息。而且視頻設備的設備描述表還與特定的視窗有關。首先你必須獲得一個設備描述表句柄,然後在圖形繪製時,你把這個句柄作為一個參數傳遞給GDI圖形繪製函式。當然你也可以把它傳遞給獲得或設定設備描述表有關屬性的函式。
利用GDI+函式,你不必使用句柄或者設備描述表。相反,你可以簡單地創建一個圖形對象(Graphics),然後以你熟悉的面向對象的編程方式調用它的方法即可,譬如myGraphicsObject.DrawLine(parameters)。Graphics對象是GDI+的核心,正如設備描述表是GDI的核心一樣,設備描述表(DC)和圖形對象(Graphics)在不同的環境下扮演著同樣的角色,發揮著類似的作用,但是兩者也存在著這質的不同。前者使用基於句柄的編程方法而後者使用面向對象的編程方法。
圖形對象和設備對象一樣,與螢幕的顯示視窗有關,它包含著與項目重繪有關的屬性信息(譬如平滑度),然而圖形對象並沒有像GDI那樣與Pen(畫筆)、Path(路徑)、Image(圖像)、Font(字型)等攪在一起。在GDI中,所有與繪圖有關的繪圖對象必須選入指定設備描述表中(使用SelectObject函式),才能被指定的設備描述表所使用。而在GDI+中,你只需把這些繪圖對象作為一個參數傳遞給圖形對象Graphics方法調用即可,每一個圖形對象所使用的繪圖工具至於它調用方法使用的參數有關,它可以通過參數使用多種Pen和Brush繪圖,而不是與特定的筆和畫刷聯繫在一起。
GDI是GraphicsDeviceInterface的縮寫,含義是圖形設備接口,它的主要任務是負責系統與繪圖程式之間的信息交換,處理所有Windows程式的圖形輸出
在Windows作業系統下,絕大多數具備圖形界面的應用程式都離不開GDI,我們利用GDI所提供的眾多函式就可以方便的在螢幕、印表機及其它輸出設備上輸出圖形,文本等操作。GDI的出現使程式設計師無需要關心硬體設備及設備驅動,就可以將應用程式的輸出轉化為硬體設備上的輸出,實現了程式開發者與硬體設備的隔離,大大方便了開發工作。
GDI是如何實現輸出的
[編輯本段]
要想在螢幕或者其它輸出設備上輸出圖形或者文字,那么我們就必須先獲得一個稱為設備描述表(DC:DeviceContext)的對象的句柄,以它為參數,調用各種GDI函式實現各種文字或圖形的輸出。
設備描述表是GDI內部保存數據的一種數據結構,此結構中的屬性內容與特定的輸出設備(顯示器,印表機等)相關,屬性定義了GDI函式的工作細節,在稍後我們將看到如何使用TextOut函式輸出文字,在這裡屬性確定了文字的顏色,x坐標和y坐標映射到視窗顯示區域的方式等。
設備描述表句柄一旦獲得,那么系統將使用默認的屬性值填充設備描述表結構。
如果有必要,我們可以使用一些GDI函式獲取和改變設備描述表中的屬性值。

圖片漏洞

漏洞影響:
Microsoft產品中所使用的GDI+庫(GdiPlus.dll)通過基於類的API提供對各種圖形方式的訪問。
GDI+庫在解析特製的BMP檔案時存在整數溢出漏洞,如果檔案中包含有畸形的BitMapInfoHeader的話,就會導致錯誤的整數計算,最終觸發可利用的記憶體破壞。
成功利用此漏洞的攻擊者可完全控制受影響的系統。如果用戶使用受影響的軟體查看特製圖像檔案或瀏覽包含特製內容的網站,則這些漏洞可能允許遠程執行代碼。
攻擊者可隨後安裝程式;查看、更改或刪除數據;或者創建擁有完全用戶許可權的新帳戶。那些帳戶被配置為擁有較少系統用戶許可權的用戶比具有管理用戶許可權的用戶受到的影響要小。
受影響的圖片格式
此次gdi+漏洞非常嚴重,類似以前的游標漏洞和wmf漏洞,涉及的格式更廣(bmp\wmf\gif\emf\vml)
 微軟對第三方應用程式建議:
★我是第三方應用程式開發人員,我的應用程式使用gdiplus.dll。我的應用程式是否容易受到攻擊,如何進行更新?
重新分發gdiplus.dll的開發人員應該確保他們通過下載本公告中提供的更新來更新隨其應用程式安裝的gdiplus.dll版本。鼓勵開發人員按照使用共享組件的推薦最佳方案執行操作。有關使用共享組件的最佳做法的詳細信息,請參閱關於獨立應用程式的Microsoft知識庫文章835322。
★我正在開發包含可重新分發檔案gdiplus.dll的軟體。應該怎樣做?
您應該為您的開發軟體安裝本公告中提供的安全更新。如果已經隨您的應用程式重新分發了gdiplus.dll,您應該使用為您的開發軟體下載此安全更新時獲得的此檔案更新版本向您的客戶發布您的應用程式的更新版本。
★如果第三方應用程式使用或安裝受影響的gdiplus.dll組件,那么安裝所有需要的Microsoft安全更新之後是否仍然容易受到攻擊?
否,此安全更新替換並重新註冊隨作業系統提供的受影響的組件。如果第三方應用程式遵循建議的最佳方案,即將共享組件用作並列組件,那么它們也不會受到影響。如果第三方應用程式沒有遵循推薦的最佳方案,而是隨其應用程式一起重新分發了gdiplus.dll的舊版本,則客戶可能受到威脅。Microsoft知識庫文章954593也包含面向希望手動檢查已註冊的受影響OLE組件的說明。鼓勵客戶聯繫第三方解決方案開發商以獲取其他信息。
微軟GDI+圖片漏洞360專用補丁包下載地址:
http://dl.360safe.com/360gdi_fix.exe

相關詞條

熱門詞條

聯絡我們