我想用VC编一个作图程序,但不知道应该怎么写。比如我有个函数y=x+x^2,现要把这个函数的图形做出来。
请各位高手指点。

解决方案 »

  1.   

    计算各点的坐标,在内存DC中画图,然后BitBlt到视图里
      

  2.   

    先确定坐标系,然后x逐一代入函数,计算出y值,然后再CDC中SetPixel(x,y).............
      

  3.   

    1楼2楼综合起来 不过SetPixel(x,y)不行吧,MoveTo(),LineTO()
      

  4.   

    先确定坐标系,最好是建立和数学坐标系一样的坐标,然后根据函数关系式来计算点的坐标,用MoveTo,LineTo来连线,x取小一点,这样图形逼真一点
      

  5.   

    基本确定好位置 后 MVOETO LINETO 就可以了……
      

  6.   

    用下面代码设置笛卡尔坐标系
    void SetIsotropic(HDC hdc, int cx, int cy)
    {
    ::SetMapMode(hdc, MM_ISOTROPIC);
    ::SetWindowExtEx(hdc, 1000, 1000, NULL);
    ::SetViewportExtEx(hdc, cx, -cy, NULL);
    ::SetViewportOrgEx(hdc, cx/2, cy/2, NULL);
    }然后定义一个point数组存放一系列X,Y,就像用手在纸上画一样
    描点
    然后用Polyline()函数绘制就可以!
      

  7.   

    我觉得楼主可能是问怎么实现画图吧。画图的api先不说,给出数学实现。y = x +x^2要实现图形,必须让用户输入 x的范围,比如 1 <x< 5
    然后根据画图的精确度,你确定一个间隔,比如 0.1然后做一个这样的循环:x1 = 1;
    x2 = 5;
    step = 0.1;point p1, p2;p1.x = x1;
    p1.y = x1 + x1^2;
    dc.moveto(p1); //这里自己进行坐标轴的移位与比例缩放。for (double t = x1; t < x2; t+= step)
    {
        p2.x = t;
        p2.y = t + t^2;
        dc.lineto(p2);
        p1 = p2;
    }这样画出来就是一个图形了。
      

  8.   

    画图是一方面,主要关注的需要分步,
    第一,坐标系
    第二,坐标
    第三,Point对象
    第四,双缓冲
    第五,销毁对象
    可能有遗漏的步骤。