MFC繪制直角坐標系


 1 void CMyPicoTestDlg::DrawWave(CDC *pDC,CRect &rectPicture)
 2 {
 3 
 4     CPen newPen;                  //用於創建新畫筆
 5     CPen *pOldPen;                  //用於存放舊畫筆
 6     CBrush newBrush;              //用於創建新畫筆
 7     CBrush *pOldBrush;            //用於存放舊畫筆        
 8         newBrush.CreateSolidBrush(RGB(0,0,0));    //新建黑色畫刷
 9     pOldBrush=pDC->SelectObject(&newBrush); //選擇新畫刷並將舊畫刷的指針保存在pOldBrush
10     pDC->Rectangle(rectPicture); //黑色畫刷為繪圖控件,形成黑色背景
11     pDC->SelectObject(pOldBrush);//恢復舊畫刷
12     newBrush.DeleteObject(); //刪除新畫刷
13 
14     newPen.CreatePen(PS_SOLID,1,RGB(0,255,0));  //創建實心畫筆,粗度為1,顏色為綠色
15     pOldPen=pDC->SelectObject(&newPen);//選擇新畫筆,並將舊畫筆的指針保存在pOldPen
16 /************************************************************************/
17 /* 坐標軸                                                               */
18 /************************************************************************/
19 //x軸
20     pDC->MoveTo(0,rectPicture.Height()/2);
21     pDC->LineTo(rectPicture.Width(),rectPicture.Height()/2);
22 //y軸
23     pDC->MoveTo(rectPicture.Width()/2,0);
24     pDC->LineTo(rectPicture.Width()/2,rectPicture.Height());
25 //x軸刻度
26     
27     for (int32_t i=rectPicture.Width()/2-10;i>0;i-=10)
28     {
29         pDC->MoveTo(i,rectPicture.Height()/2);
30         pDC->LineTo(i,rectPicture.Height()/2-5);
31     }
32     for (int32_t i=rectPicture.Width()/2+10;i<rectPicture.Width()+1;i+=10)
33     {
34         pDC->MoveTo(i,rectPicture.Height()/2);
35         pDC->LineTo(i,rectPicture.Height()/2-5);
36 
37     }
38 //y軸刻度
39     for (int32_t i=rectPicture.Height()/2-10;i>0;i-=10)
40     {
41         pDC->MoveTo(rectPicture.Width()/2,i);
42         pDC->LineTo(rectPicture.Width()/2+5,i);
43     }
44     for (int32_t     
45          i=rectPicture.Height()/2+10;i<rectPicture.Height();i+=10)
46     {
47         pDC->MoveTo(rectPicture.Width()/2,i);
48         pDC->LineTo(rectPicture.Width()/2+5,i);
49     }
50     pDC->SelectObject(pOldPen);//恢復舊畫筆
51     newPen.DeleteObject();//刪除新畫筆
52  }

調用

void CMyPicoTestDlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知處理程序代碼
    
    CRect rectPicture;   
    m_picDraw.GetClientRect(&rectPicture);   
       //繪制坐標系
    DrawWave(m_picDraw.GetDC(), rectPicture);

}    

 


免責聲明!

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



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