刷子和畫筆是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映射方式