MFC運算功能強大,擁有完備的繪圖功能。
在Windows平台上,應用程序的圖形設備接口(graphics device interface,GDI)被抽象為設備上下文(Device Context,DC)。
在微軟基類庫MFC中,CDC類是定義設備上下文對象的基類,所有繪圖函數都在CDC基類中定義。當需要輸出文字或圖形時,就需要調用CDC類的成員函數,這些成員函數具備輸出文本、繪制圖形的功能。
本文講解的例程全部在TestView.cpp文件的void CTestView::OnDraw(CDC* pDC)函數中實現。
1.在屏幕的P0(20,20)坐標位置處繪制一個藍色像素點,然后讀出該像素點的顏色,水平平移100個像素繪制P1點;畫一個矩形。
代碼如下:
1 void CMy00View::OnDraw(CDC* pDC) 2 { 3 CMy00Doc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 // TODO: add draw code for native data here 6 7 COLORREF clr; 8 int x=20,y=20; 9 pDC->SetPixelV(x,y,RGB(255,0,0)); 10 clr=pDC->GetPixel(x,y); 11 pDC->SetPixelV(x+100,y,clr);//像素點 12 pDC->Rectangle(100,200,200,300);//矩形 13 }
效果如下:
2.從起點P0(20,30)到終點P1(200,300)畫一條1像素寬的藍色直線
代碼如下:
1 void CMy00View::OnDraw(CDC* pDC) 2 { 3 CMy00Doc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 // TODO: add draw code for native data here 6 //從起點P0(20,30)到終點P1(200,300)畫一條1像素寬的藍色直線, 7 CPen NewPen,*p01dPen; 8 NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); 9 p01dPen=pDC->SelectObject(&NewPen); 10 pDC->MoveTo(20,30); 11 pDC->LineTo(200,300); 12 pDC->SelectObject(p01dPen); 13 NewPen.DeleteObject(); 14 }
效果如下:

3.繪制左上角點為P0(100,100),右下角點為P1(600,300)的矩形。矩形邊界線為1像素寬的藍線,矩形內部填充為綠色
代碼如下:
1 void CMy00View::OnDraw(CDC* pDC) 2 { 3 CMy00Doc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 // TODO: add draw code for native data here 6 CPen NewPen,*p01dPen; 7 NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); 8 p01dPen=pDC->SelectObject(&NewPen); 9 CBrush NewBrush,*p01dBrush; 10 NewBrush.CreateSolidBrush(RGB(0,255,0)); 11 p01dBrush=pDC->SelectObject(&NewBrush); 12 pDC->Rectangle(100,100,600,300); 13 pDC->SelectObject(p01dBrush); 14 NewBrush.DeleteObject(); 15 }
效果如下: