VC++ MFC 画图 详解(附源码)

(1)新建 MFC aplication exe 文件:

painttool

(2)在CPaintoo1View类的 OnDraw方法 添加如下代码:

画图程序:

Code:
  1. void CPaintoo1View::OnDraw(CDC* pDC)  
  2. {  
  3.     CPaintoo1Doc* pDoc = GetDocument();  
  4.     ASSERT_VALID(pDoc);  
  5. // TODO: add draw code for native data here  
  6.     CPen pen_zuobixi,pen_sinx;  
  7.     pen_zuobixi.CreatePen(PS_SOLID,4,RGB(0,0,0));  
  8.     pen_sinx.CreatePen(PS_SOLID,2,RGB(0,0,255));  
  9.     pDC->SelectObject(&pen_zuobixi);  
  10.     //指定原点  
  11.     pDC->SetViewportOrg(200,255);  
  12.     pDC->SetTextColor(RGB(255,0,0));  
  13.     CString sPIText[] = {"-1","0"," 1" , "2","3","4","5","6","7","8","9","10","11"};  
  14.     int n= -1;  
  15.     int nTemp = 0;  
  16.     while(nTemp<=660)  
  17.     {    pDC->LineTo(60*n,0);  
  18.         pDC->LineTo(60*n,-5);  
  19.         pDC->MoveTo(60*n,0);  
  20.         pDC->TextOut(60*n-sPIText[n+1].GetLength()*3,16,sPIText[n+1]);   
  21.         n++;  
  22.         nTemp+=60;  
  23.     }  
  24.     pDC->MoveTo(0,0);  
  25.     CString strTemp;  
  26.   
  27.     for(n=-4,nTemp=0; nTemp<=180; n++,nTemp+=60){  
  28.         pDC->LineTo(0,60*n);  
  29.         pDC->LineTo(5,60*n);  
  30.         pDC->MoveTo(0,60*n);  
  31.         strTemp.Format("%d",-n);  
  32.         pDC->TextOut(10,60*n,strTemp);  
  33.     }  
  34.     double y,radian;  
  35.     pDC->SelectObject(&pen_sinx);  
  36.     for(int x=-60; x<600; x++)  
  37.     {  
  38.        radian = x/((double)6*2)*Pi;  
  39.     y=(radian*(-0.109417*radian+1.936310)+2.399982);  
  40.        pDC->MoveTo((int)x,(int)y);  
  41.        pDC->LineTo((int)x,(int)y);  
  42.     }  
  43.     pen_sinx.DeleteObject();  
  44.    
  45. }  

运行结果为:

 

你可能感兴趣的:(VC++ MFC 画图 详解(附源码))