Direct2D 學習筆記

2022-04-05 14:59:25 字數 1495 閱讀 8502

direct2d(以下簡稱d2d)是乙個 使用者模式的庫,基於 d3d 10.1 api(從 win8開始,d2d 基於 d3d 11.1)。所以 d2d 可以提供 gpu 硬體加速。d2d架構圖:

第一步:標頭檔案

#include
第二步:建立乙個 id2d1 工廠

1 id2d1factory *m_pd2dfactory ;

2 hr = d2d1createfactory (d2d1_factory_type_single_threaded, & m_pd2dfactory);

第三步:建立 render target

1

//obtain the size of the drawing area.

2rect rc ;

3 getclientrect(hwnd , &rc );45

//create a direct2d render target

6 id2d1hwndrendertarget * prt =null ;

7 hresult hr = pd2dfactory->createhwndrendertarget(

8d2d1::rendertargetproperties (),

9d2d1::hwndrendertargetproperties (

10hwnd,

11d2d1::sizeu (

12 rc. right -rc. left,

13 rc. bottom -rc. top)

14),

15 &prt

16 );

第四步:建立筆刷

1 id2d1solidcolorbrush * pblackbrush =null ;2if

(succeeded (hr ))

第五步:畫矩形

1 prt->begindraw();

23 prt->drawrectangle(

4d2d1::rectf(

5 rc.left + 100.0f

,6 rc.top + 100.0f

,7 rc.right - 100.0f

,8 rc.bottom - 100.0f),9

pblackbrush);

1011 hresult hr = prt->enddraw();

第六步(最後):釋放資源

1

saferelease(prt);

2saferelease(pblackbrush);

3 saferelease(pd2dfactory);

(有機會再補充完整)

Direct2D 快速入門

本文為msdn direct2d 部分譯文,歡迎指點!原文 direct2d 是用於建立2d圖形的本地即時模式應用程式介面。本文介紹如何在典型的win32應用程式中運用direct2d進行繪製。switch message return 0 處理其它訊息.要用 gdi 繪製乙個矩形,需要捕獲 wm ...

Direct2D 中層概述

物件表示,它使應用程式可以操作一組繪製操作。可通過將層 壓入 呈現器目標的方式來使用層。呈現器目標執行的後續繪製操作將被指引到壓入的層。在處理完該層之後,可從呈現器目標 彈出 該層,這可將該層的內容重新復合到呈現器目標中。雖然層提供了一種用於產生有趣效果的強大呈現方法,但在應用程式中過多使用層可能會...

Direct2D實現文字映象陰影

一 實現思路 先繪製文字陰影部分,繪製陰影文字後應用3dtransform與高斯模糊特效,最後再正常繪製一次文字主體。二 實現 hr m pdwritefactory createtextformat sc fontname,null,dwrite font weight normal,dwrite...