如何在 Ubuntu 中使用 graphics.h?

如何在 Ubuntu 中使用 graphics.h?

有没有支持graphics.h库的基于Linux的编译器?我想实现图形程序,请告诉我是否有这样的软件。

如果没有那么我该如何使用它?

答案1

有几种选项可用于使用 Ubuntu 进行图形编程。

使用 SDL

如果要graphics.h在Ubuntu平台上使用,则需要编译并安装libgraph。它是使用SDL在Linux上实现的turbo c图形API。

它不是很强大并且适合生产质量应用程序,但是对于学习目的来说它简单且易于使用。

您可以从以下位置下载这里

  1. 首先添加宇宙存储库(因为主存储库中没有某些必需的包):

    sudo add-apt-repository universe
    sudo apt-get update
    
  2. 其次安装 build-essential 和一些附加包:

    • 对于 18.04 之前的版本:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-1.8 \
      guile-1.8-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev build-essential
      
    • 对于 18.04:从 Ubuntu 18.04 开始guile-2.0有效,但libesd0-dev已弃用。为此,您需要xenial在 中添加 的存储库sources.list

      sudo nano /etc/apt/sources.list
      

      添加以下行:

      deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
      deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe
      

      运行sudo apt-get update。然后使用以下命令安装软件包:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-2.0 \
      guile-2.0-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev
      
  3. 现在提取下载的libgraph-1.0.2.tar.gz文件。

  4. 进入解压的文件夹并运行以下命令:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
    
  5. 现在您可以#include<graphics.h>在 Ubuntu 上使用以下行:

    int gd=DETECT,gm; 
    initgraph(&gd,&gm,NULL);
    

以下是使用的示例程序graphics.h

/*  demo.c */
#include <graphics.h>

int main()
{
   int gd = DETECT,gm,left=100,top=100,right=200,bottom=200,x= 300,y=150,radius=50;
   initgraph(&gd,&gm,NULL);
   rectangle(left, top, right, bottom);
   circle(x, y, radius);
   bar(left + 300, top, right + 300, bottom);
   line(left - 10, top + 150, left + 410, top + 150);
   ellipse(x, y + 200, 0, 360, 100, 50);
   outtextxy(left + 100, top + 325, "C Graphics Program");

   delay(5000);
   closegraph();
   return 0;
}
  • 要编译它,请使用

    gcc demo.c -o demo -lgraph
    
  • 运行类型

    ./demo
    

演示 1 的输出

使用 OpenGL(通过 GLUT)

尽管 OpenGL 基本上是为 3D 编程而设计的,但绘制 2D 形状给出了 OpenGL 的基本概述和介绍,并给出了如何开始在 OpenGL 中绘制对象的想法。

  • 要安装 GLUT,请打开终端并输入sudo apt-get install freeglut3-dev
  • 这是一个使用 GLUT 的简单图形程序
/*  demo.c */
#include <GL/gl.h>
#include <GL/glut.h>
#include <GL/glu.h>

void setup() {   glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }

void display()
   {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glColor3f(0.0f, 0.0f, 0.0f);
      glRectf(-0.75f,0.75f, 0.75f, -0.75f);
      glutSwapBuffers();
   }

int main(int argc, char *argv[])
  {
     glutInit(&argc, argv);
     glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
     glutInitWindowSize(800,600);
     glutCreateWindow("Hello World");

     setup();
     glutDisplayFunc(display);
     glutMainLoop();
     return 0;
  }
  • 使用以下方式编译

    gcc demo.c -o 演示-lglut -lGL

  • 使用运行

    ./演示

演示 2 的输出

答案2

如果您想在 ubuntu 或任何其他 Linux 发行版中使用 graphics.h,那么我更喜欢 libxbgi。它几乎可以完成您对 windows 的 graphics.h 所期望的所有操作。您可以从此处下载它: http://libxbgi.sourceforge.net/

否则,如果您想制作一些高端图形,那么您可以使用 SDL(主要用于编程视频游戏)和 OpenGL(用于 3D 图形)。您也可以混合使用两者。一个例子是游戏 briquolo(拼写可能错误)。

快乐的图形编程!

相关内容