1.GDI概念
GDI:Graphics Device Interface,即圖形設(shè)備接口,是Windows API的一個(gè)重要組成部分背镇。它是Windows圖形顯示程序與實(shí)際物理設(shè)備之間的橋梁诡壁,GDI使得用戶無(wú)需關(guān)心具體設(shè)備的細(xì)節(jié),而只需在一個(gè)虛擬的環(huán)境(即邏輯設(shè)備)中進(jìn)行操作。它的橋梁作用體現(xiàn)在:
(1)用戶通過(guò)調(diào)用GDI函數(shù)將邏輯空間的操作轉(zhuǎn)化為具體針對(duì)設(shè)備驅(qū)動(dòng)程序的調(diào)用。為實(shí)現(xiàn)圖形設(shè)備無(wú)關(guān)性陷寝,Windows的繪圖操作在一個(gè)設(shè)備描述表上進(jìn)行叛复。用戶擁有自己的“邏輯坐標(biāo)”系統(tǒng)撬码,它獨(dú)立于實(shí)際的物理設(shè)備,與“設(shè)備坐標(biāo)”相對(duì)應(yīng)。開發(fā)Windows應(yīng)用程序時(shí),程序員關(guān)心的是邏輯坐標(biāo)堰酿,我們?cè)谶壿嬜鴺?biāo)系上繪圖哼绑,利用GDI將邏輯窗口映射到物理設(shè)備上疫铜。
(2)GDI能檢測(cè)具體設(shè)備的能力趣避,并依據(jù)具體的設(shè)備以最優(yōu)方式驅(qū)動(dòng)這些設(shè)備愁拭,完成真實(shí)的顯示。
2.MFC中CDC類基本運(yùn)用
使用GDI時(shí)惜论,經(jīng)常需要將PEN、BRUSH等GDI對(duì)象選入DC(CDC類)乾巧,并需要保存舊的GDI對(duì)象,然后進(jìn)行一些繪圖操作预愤。此時(shí)調(diào)用的繪圖函數(shù)都是使用這些新選入的PEN植康、BRUSH榄攀,繪圖完成之后再把舊的GDI對(duì)象重新選回DC贞瞒,這稱之為“狀態(tài)模式”。在空間變量在調(diào)用過(guò)GetDC()
接口后申钩,需要調(diào)用ReleaseDC()
進(jìn)行釋放,否則將會(huì)占用大量?jī)?nèi)存資源轩缤,造成程序崩潰命迈。
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(0,255,0));//構(gòu)造畫筆對(duì)象
CDC* dc=this->GetDC();
CPen *pOldPen;
pOldPen=dc->SelectObject(&pen);//將畫筆選入DC
dc->MoveTo(m_ptOrigin);//m_ptOrigin和point為Point類型的點(diǎn)
dc->LineTo(point);
dc->SelectObject(pOldPen);//恢復(fù)先前的畫筆
pen.DeleteObject();
ReleaseDC(dc);