RNG.小鹏 发表于 2023-3-15 21:01:43

Dev-c++绘图时设置原点函数setorigin执行错误

#include <graphics.h>
#include <math.h>
#include <conio.h>
#define PI 3.1415926
int main()
{
        initgraph(640,480);
        setcolor(GREEN);
        setorigin(320,240);
        double e;
        int x1,y1,x2,y2;
        for(double a=0;a<2*PI;a+=2*PI/720)
        {
                e=100*(1+sin(4*a));
                x1=(int)(e*cos(a));
                y1=(int)(e*sin(a));
                x2=(int)(e*cos(a+PI/5));
                y2=(int)(e*sin(a+PI/5));
                line(x1,y1,x2,y2);
                Sleep(20);
        }
        getch();
        closegraph();
}
这个程序用Dev-c++运行会显示“ 'setorigin' was not declared in this scope”,我已经下载了支持“graphics.h"的ege函数包,但是设置原点函数”setorigin()"会报错,只有注释掉才能运行,但是只能在(0,0)点绘图,达不到展示全部绘图结果,孩子已经查了好多资料了还是解决不了,该怎么办啊

isdkz 发表于 2023-3-15 21:04:59

首先,我明白您的问题和困扰。关于Dev-C++使用graphics.h库的问题,我提供一个解决方案。

实际上,setorigin()函数并不是graphics.h库中的函数,您可以使用setviewport()来代替它。您可以将程序修改为如下形式:

#include <graphics.h>
#include <math.h>
#include <conio.h>
#define PI 3.1415926
int main()
{
    initgraph(640, 480);
    setcolor(GREEN);
    setviewport(320, 240, 640, 480, 1); // 使用setviewport()代替setorigin()
    double e;
    int x1, y1, x2, y2;
    for (double a = 0; a < 2 * PI; a += 2 * PI / 720)
    {
      e = 100 * (1 + sin(4 * a));
      x1 = (int)(e * cos(a));
      y1 = (int)(e * sin(a));
      x2 = (int)(e * cos(a + PI / 5));
      y2 = (int)(e * sin(a + PI / 5));
      line(x1, y1, x2, y2);
      Sleep(20);
    }
    getch();
    closegraph();
}

这里,我将setorigin()函数替换为setviewport()。setviewport()函数的前四个参数分别是视口的左上角和右下角坐标,最后一个参数是裁剪选项。

在这个例子中,视口左上角坐标为(320, 240),右下角坐标为(640, 480),最后一个参数为1,表示启用裁剪。通过这种方式,您可以实现在(320, 240)点开始绘图的效果。

请尝试这个解决方案,看看是否能解决您的问题。如果仍然存在问题,欢迎随时提问。

RNG.小鹏 发表于 2023-3-18 17:31:31

isdkz 发表于 2023-3-15 21:04
首先,我明白您的问题和困扰。关于Dev-C++使用graphics.h库的问题,我提供一个解决方案。

实际上,setor ...

这也显示不全图案啊
页: [1]
查看完整版本: Dev-c++绘图时设置原点函数setorigin执行错误