利用Microsoft VC++6.0 的MFC 的繪圖工具實現簡單圖形的繪制


      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 }

 效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM