如题:老师给我的就是这要求.我有点不太理解.我的的想法是这是画一个正弦曲线,a就是振幅,而x就是转10圈,相当于周期.b我没想到是干啥的!
    我问了下人,和查了下资料,他们都是用SDK实现的,但是老师要求我用MFC.我框架做出来了,最后在消息里边定义了一个画笔pen,现在关键是我想不到算法,用什么函数可以画正弦?或者自己定义一个数组,再用Polyline()?
   想法我是有,就是写不出来算法!!能不能来个好心人帮下我,写一个可以在MFC下运行的算法,马上开学了,急啊!求求各位高手了!!!!

解决方案 »

  1.   

    不是用什么函数画正玄,你只要得到一组(x,y)坐标就行了:
    例如:
    CClientDC dc(this);
    dc.SetTextColor(RGB(0,0,255));
    dc.SetBkMode(TRANSPARENT);
    CPen *pen = new CPen();
    pen->CreatePen(PS_DOT,2,RGB(200,100,0));
    dc.SelectObject(pen);
    for(int i=0;i<500;i++)
    {
    dc.LineTo(i,100*sin(i*1.0/iSize)+100);
    }
    dc.MoveTo(0,100);
    dc.LineTo(500,100);
    delete pen;}
      

  2.   

    int a = 100, b = 1;
    double y = 100.;
    pDC.MoveTo(0, (int)y);for(int x=1; x<3600; x+=10)
    {
       y =100+ a*sin(x/180.*pi);
       pDC.LineTo(x, (int)y);
    }
      

  3.   

    谢谢呀!我把(阳光)的打进去,确实可以画正弦曲线,但是我本来定义了编辑控件来控制a和b,现在这种算法就是直接画出了,而且大小不变,等于a和b的控件成摆设了!那应该杂样才能把他们联系起来啊??
    十分谢谢啊,再麻烦一下,大家!!
      

  4.   

    我的a和b分别的代表变量是a:m_ctlSpinNum          b:m_ctlSliDia
      

  5.   

    double y = 100.;
    pDC.MoveTo(0, (int)y);for(int x=1; x<3600; x+=10)
    {
       y =100+ m_ctlSpinNum*sin(m_ctlSliDia*x/180.*pi);
       pDC.LineTo(x, (int)y);
    }
      

  6.   

    对a,b控件右键->events->选EN_CHANGE响应它:
    在里面画曲线,画之前
    UpdateData(); //更新a,b值
    Invalidate(); //插除以前画的或在OnPaint()里画,调用Invalidate(FALSE); 触发
      

  7.   

    他说我这句:y =100+ m_ctlSpinNum*sin(m_ctlSliDia*x/180.*pi);有如下错误
    error C2676: binary '*' : 'class CSliderCtrl' does not define this operator or a conversion to a type acceptable to the predefined operator
    他这是说我的滑块没发现什么啊??
      

  8.   

    我终于弄出来了,谢谢2位.十分感谢!
    原来这个错误就是他不能识别a:m_ctlSpinNum 和b:m_ctlSliDia的类型.
    必须把他们赋给int型的!再说一次感谢,现在就给分,可惜只有20分,能不能1人10分啊?
    可以就这样,不行的话就只能一个没分了,不过我心理这感激都一样!
    谢谢!