现在需要用VC编写一个正弦条纹图像,从而可以用投影仪投影出去。由于刚接触VC,不知从哪里入手,能否给予指点,谢谢。

解决方案 »

  1.   

    不太明白你是什么意思???void CTestDlg::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here
    CRect rect;
    GetClientRect(&rect); int x,y;
    int ox,oy; //原点
    int lx,ly; //限制 MAX 
    ox = rect.left;
    oy = (rect.bottom + rect.top)/2; lx = rect.right;
    ly = oy;

    double PI = 3.1415926535897932384626433832795;
    int t= 100; //周期
    float f = (float)(2*PI/t); //频率
    float p = 0; //初相

    p = p*180/PI;

    dc.MoveTo(ox,oy);
    for (int i=ox; i<lx; i++)
    {
    x = i;
    y = oy - sinf(p+f*x)*ly;
    dc.LineTo(x,y);
    }
    // Do not call CDialog::OnPaint() for painting messages
    }
      

  2.   

    顺便问一个低级的问题,Onpaint()和Ondraw()有什么区别啊?我这个编程用哪一个比较好呢?为什么MFC工程文件以后只看见Ondraw()的函数,如何显现Onpaint,需不需要重新定义类。另外我这个程序还要用一些控件实现初始化,如周期,相位等等,不知道用什么控件比较好。
      

  3.   

    OnPaint是消息WM_PAINT的响应函数,OnDraw是CView的虚函数,在CView::OnPaint根据是打印还是屏幕绘制分别以不同的参数调用OnDrawOnDraw()虛函數OnPaint优先于OnDraw,,在你自己的视图类响应WM_PAINT消息后就不会调用OnDraw(),除非自己显式调用我上面的代码是基于对话框的,没有OnDraw大致情况是这样吧,可能有误,你自己查查MSDN