精通Visual C++圖象程式設計---讀書筆記6.1
繪製DIB:直接在DIB進行GDI操作
Create(m_hbitmap);
Win32 SDK和MFC都提供大量的GDI操作函式,如能直接在DIB處理中使用這些函式,將大大提高DIB的處理能力,作為CDib類的一大特色,CDib類設計了一種巧妙的方式來實現直接繪製DIB,即在DIB中進行GDI操作.
對GDI操作進行分析可發現,幾乎所有的GDI操作都是對裝置上下文來進行的(HDC/CDC、CPaintDC、CWindowDC、CClientDC).我們的基本思想是,建立一個記憶體裝置上下文(m_pMemDC),並將DIB對應的DDB(m_pBitmap)選進m_pMemDC;在外部程式中,針對該記憶體裝置上下文所做的任何操作都將反映在m_pBitmap中;操作完成後,根據m_pBitmap相關的DIBSECTION控制程式碼m_hBitmap更新DIB,使實現了DIB的繪製.CDib的這一功能由函式BeginPaint和EndPaint實現.
BeginPaint建立記憶體裝置上下文m_pMemDC,將m_pBitmap選進m_pMemDC,並向外界返回m_pMemDC,供外界進行GDI操作 .
CDC* CDib::BeginPaint(CDC *pDC)
{
m_pMemDC=new CDC;
m_pMemDC->CreateCompatibleDC(pDC);
m_pPaletteTmp=m_pMemDC->SelectPalette(m_pPalette,TRUE);
m_pMemDC->RealizePalette();
m_pBitmapTmp=(CBitmap*)m_pMemDC->SelectObject(m_pBitmap);
return m_pMemDC;
}
EndPaint 函式用於結束GDI操作,包括刪除m_pMemDC,根據m_hBitmap更新DIB:
void CDib::EndPaint()
{
m_pMemDC->SelectObject(m_pBitmapTmp);
m_pMemDC->SelectPalette(m_pPaietteTmp,TRUE);
delete m_pMemDC;
Create(m_hbitmap);
}
}
}
相關文章
- 精通Visual C++圖象程式設計------讀書筆記8C++程式設計筆記
- 精通Visual C++圖象程式設計---讀書筆記6.2C++程式設計筆記
- 精通Visual C++圖象程式設計---讀書筆記5C++程式設計筆記
- 《精通JavaScript》讀書筆記JavaScript筆記
- 讀書筆記(2)《微精通》筆記
- 《程式設計匠藝》讀書筆記程式設計筆記
- 《高質量C++程式設計指南》讀書筆記(一) (轉)C++程式設計筆記
- 《JavaScript程式設計精解》--讀書筆記JavaScript程式設計筆記
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- 讀書筆記-Java程式設計思想-03筆記Java程式設計
- Java遊戲程式設計讀書筆記(轉)Java遊戲程式設計筆記
- 反應式程式設計讀書筆記程式設計筆記
- CSAPP 併發程式設計讀書筆記APP程式設計筆記
- C#高階程式設計 讀書筆記C#程式設計筆記
- 《程式設計師的吶喊》讀書筆記程式設計師筆記
- 《程式設計師自我修養》讀書筆記程式設計師筆記
- 《程式設計師修煉之道》讀書筆記程式設計師筆記
- C++讀書筆記:字串C++筆記字串
- 《Effective C++》讀書筆記C++筆記
- 《Go 語言程式設計》讀書筆記(十一)底層程式設計Go程式設計筆記
- 一個程式設計師的讀書筆記:程式設計的反思程式設計師筆記
- 《Go 語言程式設計》讀書筆記(四)介面Go程式設計筆記
- 《Go 語言程式設計》 讀書筆記 (八) 包Go程式設計筆記
- 《Go 語言程式設計》讀書筆記(十)反射Go程式設計筆記反射
- 《Go 語言程式設計》讀書筆記 (三) 方法Go程式設計筆記
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- python高階程式設計讀書筆記(一)Python程式設計筆記
- 《程式設計師的自我修養》-讀書筆記程式設計師筆記
- C語言程式設計讀書筆記:結構C語言程式設計筆記
- 讀書筆記 - 《程式設計師的自我修養》筆記程式設計師
- Head First Javascript 程式設計讀書筆記(一)JavaScript程式設計筆記
- Head First Javascript 程式設計讀書筆記(二)JavaScript程式設計筆記
- Head First Javascript 程式設計讀書筆記(三)JavaScript程式設計筆記
- Head First Javascript 程式設計讀書筆記(四)JavaScript程式設計筆記
- Java程式設計思想讀書筆記一:併發Java程式設計筆記
- 《Servlet與JSP核心程式設計》讀書筆記ServletJS程式設計筆記
- 《Effective C++》第4章 設計與宣告(2)-讀書筆記C++筆記
- 《Effective C++》第4章 設計與宣告(1)-讀書筆記C++筆記