在VC里面建立一个文本框,首先在这个文本框里面建立一个有X,Y轴的坐标系,当从外部读入(X,Y)的数值的时候,在坐标系里面可以将这些数值绘制成一条轨迹,显示(X,Y)坐标的变化。比如说(X,Y)是函数y=sinx的值,那么就是绘制一个SIN曲线。数据点要密集一点。

解决方案 »

  1.   

    可以参看我的博客
    http://blog.csdn.net/zgl7903/archive/2009/09/06/4524856.aspx
      

  2.   

    在文本框中?
    你用SDI的吗?画在View里面好了呀
      

  3.   

    文本框不好处理,用CStatic比较好...........
      

  4.   

    //建一个CMyEdit类(用classwizard -》add class 》基类CEdit),把你的“文本框”改为:
    CMyEdit 文本框;//在你的dlg。h中。
    这样在CMyEdit 的OnPaint中就可以绘图了。
    绘图用到几个函数:
    MoveTo(),LineTo(),SetPixel()y=sinx
      

  5.   

    重载DRAWITEM函数,想画什么就画什么。
      

  6.   

    // 例子:
    // CMyEdit message handlers
    #define GridHeight  20
    #define GridStartX  40
    #define GridStartY  10
    // this edit has been disabled !
    void CMyEdit::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting
    // TODO: Add your message handler code here
    // Erase back ground
    CRect rect;
    GetClientRect(&rect);
    dc.FillSolidRect(&rect,RGB(255,255,128));//a bit yellow
    //
    int i;
    int GridWidth;
    // for unit
    CString xUnit("0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0") ;
    CString yUnit;
    CFont *pFont=new CFont;
    pFont->CreatePointFont(100,"Small System");// 80=8 point
    CFont *oldFont=dc.SelectObject(pFont);
    CSize size=dc.GetTextExtent("0.0 ",4);
    GridWidth=size.cx;
    // Vert |
    for (i=0;i<=10;i++)
    {
    dc.MoveTo(GridStartX+GridWidth*i,GridStartY);
    dc.LineTo(GridStartX+GridWidth*i,GridStartY+GridHeight*10);
    }
    // Hori -
    for (i=0;i<=10;i++)
    {
    dc.MoveTo(GridStartX,GridStartY+GridHeight*i);
    dc.LineTo(GridStartX+GridWidth*10,GridStartY+GridHeight*i);
    yUnit.Format("%2.1f",1.0-i/10.0);
    dc.TextOut(5,GridStartY-size.cy/2+GridHeight*i,yUnit);
    }
    dc.TextOut(GridStartX-GridWidth/3,GridStartY+size.cy/2+GridHeight*10,xUnit);
    //
    double zheta;
    double pi=3.1415926535897932384626433832795;
    double sigma;
    for(zheta=0;zheta<=1.0;zheta+=0.001)
    {
     sigma=exp(-pi*zheta/sqrt(1-zheta*zheta))*GridHeight*10.0;
     dc.SetPixel((int)(GridStartX+zheta*10*GridWidth),
             (int)((GridStartY+10*GridHeight)-sigma),
     RGB(255,0,0));//red
    }
    //
    dc.SelectObject(oldFont);
    DeleteObject(pFont);
    delete pFont;
    }