精通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++程式設計筆記
- 讀書筆記(2)《微精通》筆記
- 反應式程式設計讀書筆記程式設計筆記
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- CSAPP 併發程式設計讀書筆記APP程式設計筆記
- 讀書筆記-Java程式設計思想-03筆記Java程式設計
- 《JavaScript程式設計精解》--讀書筆記JavaScript程式設計筆記
- 《程式設計師修煉之道》讀書筆記程式設計師筆記
- 《程式設計師自我修養》讀書筆記程式設計師筆記
- python高階程式設計讀書筆記(一)Python程式設計筆記
- C#高階程式設計 讀書筆記C#程式設計筆記
- 《Effective C++》讀書筆記C++筆記
- C++讀書筆記:字串C++筆記字串
- 《Go 語言程式設計》讀書筆記(十一)底層程式設計Go程式設計筆記
- 《Go 語言程式設計》讀書筆記(十)反射Go程式設計筆記反射
- 《Go 語言程式設計》 讀書筆記 (八) 包Go程式設計筆記
- 《Go 語言程式設計》讀書筆記(四)介面Go程式設計筆記
- 《Go 語言程式設計》讀書筆記 (三) 方法Go程式設計筆記
- C語言程式設計讀書筆記:結構C語言程式設計筆記
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- 《程式設計師的自我修養》-讀書筆記程式設計師筆記
- C++核心程式設計筆記C++程式設計筆記
- Head First設計模式讀書筆記設計模式筆記
- 大話設計模式 讀書筆記設計模式筆記
- 《Go 語言程式設計》讀書筆記 (二)函式Go程式設計筆記函式
- 【讀書筆記】Java併發程式設計的藝術筆記Java程式設計
- 《重構:改善既有程式碼的設計》讀書筆記筆記
- Java 併發程式設計實踐 讀書筆記四Java程式設計筆記
- 《重構-改善既有程式碼的設計》讀書筆記筆記
- 《Go 語言程式設計》讀書筆記 (九) 命令工具集Go程式設計筆記
- JavaScript DOM 程式設計藝術(第2版) 讀書筆記JavaScript程式設計筆記
- 《重構 改善既有程式碼的設計》 讀書筆記(十五)筆記
- 《C專家程式設計》讀書筆記(1-3章)程式設計筆記
- 高效程式設計師的45個習慣 讀書筆記程式設計師筆記
- 《重構:改善既有程式碼的設計》讀書筆記(一)筆記
- 《圖解 HTTP》 讀書筆記圖解HTTP筆記