MFC繪制直角坐標系
阿新 • • 發佈:2018-05-15
坐標 mov raw 顏色 恢復 get n) png ldb
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); }
MFC繪制直角坐標系