GDI繪圖

 刷子和畫筆是MFC作圖中是使用最多的GUI對象,本節在講解刷子和畫筆使用方法的同時也講述一寫基本作圖函數。

    在畫點或畫線時系統使用當前DC中的畫筆,所以在創建畫筆後必須將其選入DC纔會在繪圖時產生效果。畫筆可以通過CPen對象來產生,通過調用CPen::CreatePen( int nPenStyle, int nWidth, COLORREF crColor )來創建

刷子是在畫封閉曲線時用來填充的顏色,例如當你畫圓形或方形時系統會用當前的刷子對內部進行填充。刷子可利用CBrush對象產生

對於矩形,圓形或類似的封閉曲線,系統會使用畫筆繪製邊緣,使用刷子填充內部。如果你不希望填充或是畫出邊緣,你可以選入空刷子(NULL_PEN)或是(NULL_BRUSH)空筆。

http://blog.sina.com.cn/s/blog_75a3cf370100yo1q.html DC的使用

 

 

https://www.cnblogs.com/weiqubo/archive/2009/12/24/1930029.html mfc中的GDI繪圖

http://www.jizhuomi.com/software/244.html 圖形圖像:CDC類及其屏幕繪圖函數

https://blog.csdn.net/OKVSA/article/details/79980894 一個簡單的繪圖程序(windows gdi 一個簡單的繪圖程序)

https://blog.csdn.net/kakaxi2222/article/details/52088692 使用Windows API進行GDI窗口繪圖

 

 

內存繪圖

首先理解內存繪圖,即把要繪製的東西先在內存中畫好,然後一次性的畫到屏幕上來。內存繪圖經常用來防止閃爍。因爲閃爍的原因是因爲反差太大。例如你的繪圖過程是先用白色擦除整個窗口,然後再將黑色的文字畫到屏幕上來,這樣在窗口重繪的時候,原本黑色文字區域就會白光一閃,然後再出現文字,也就是我們說的閃爍了。而內存繪圖的過程呢,是先創建一個內存DC,然後在這個DC上把要繪製的圖形畫好,之後一次性的填到屏幕上去。

 

  示例代碼如下:

 

 

HDC hDestDC;

RECT rc;

//..此處得到目標的HDC和目標的RECT

HDC hdc = ::CreateCompatibleDC (hDestDC);

HBITMAP hBitmap = ::CreateCompatibleBitmap (hDestDC, rc.right, rc.bottom);

HBITMAP hOldBitmap = ::SelectObject (hDC, hBitmap);

//... 此處用hdc進行繪圖

//...

::BitBlt (m_hDestDC, rc.left, rc.top, rc.Width(), rc.Height(), hDC, rc.left, rc.top, SRCCOPY);

::SelectObject (hDC, hOldBitmap);

 

https://blog.csdn.net/wowocpp/article/details/79291236  win32 窗口 雙緩衝技術 內存DC 繪製直線 --- Mem DC

https://blog.csdn.net/schao501917/article/details/52188757 內存DC和屏幕DC

https://www.cnblogs.com/weiqubo/archive/2011/03/19/1989112.html  GDI編程重要經驗談(含內存繪圖)

 

https://www.cnblogs.com/Yogurshine/p/3729546.html GDI+ 和GDI

DC是GDI的核心,Graphics對象是GDI+的核心。

 

gdi座標映射??????

https://blog.csdn.net/qq_33001647/article/details/60870632 gdi映射方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章