java - 如何在现代 Linux 中轻松制作图形?

标签 java c++ linux turbo-c++ bgi

下面是一个过去可以编写的 C 程序示例:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

void main()
{
    int gd=DETECT, gm;

    initgraph(&gd, &gm, "c:\\turboc\\bgi");
    circle(200,100,150);

    getch();
    closegraph();
}

我认为这是 MSDOS 下的 Turbo C。它可以让您在屏幕上绘图,并且可以轻松扩展以制作快速的动画图形,例如 xscreensaver hacks 中的动画图形。

我如何在 ubuntu 上的 gcc 中编写等效的内容?可以用Java实现吗?

最佳答案

#include<X11/Xlib.h>
#include<stdlib.h>

/* gcc -std=gnu99 -o circle circle.c -lX11 */

int main (int argc, char *argv[])
{

  /* connect to the X server and make a window */
  Display *dpy = XOpenDisplay (getenv ("DISPLAY"));
  Window w = XCreateSimpleWindow (dpy, DefaultRootWindow (dpy),
                                  100, 100, 640, 480, 1,
                                  BlackPixel (dpy, DefaultScreen (dpy)),
                                  WhitePixel (dpy, DefaultScreen (dpy)));

  /* raise it and wait */
  XSelectInput (dpy, w, StructureNotifyMask);
  XMapRaised (dpy, w);
  for(XEvent e; ( e.type != MapNotify );
      XWindowEvent (dpy, w, StructureNotifyMask, &e));

  /* create a graphics context for drawing in the window */
  GC g = XCreateGC (dpy, w, 0, NULL);

  /* draw a circle */
  XDrawArc(dpy,w,g,200,100,150,150,0,360*64);
  XFlush(dpy);

  /*wait for key press*/
  XSelectInput (dpy, w, KeyReleaseMask);
  for(XEvent e; ( e.type != KeyRelease ); 
      XWindowEvent (dpy, w, KeyReleaseMask, &e));

  /*clean up*/
  XDestroyWindow( dpy, w );
  XCloseDisplay (dpy);
}

关于java - 如何在现代 Linux 中轻松制作图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504974/

相关文章:

java - 找出最长回文的长度。没有额外的数据结构是否可以做到这一点?

java - 仅在声明最后一个数组时出现的神秘错误

c++ - 为什么析构函数禁用隐式 move 方法的生成?

c++ - C++中的静态成员

python - 使用python检查文件的权限

java - getEngineByName ("nashorn") 返回 null

java - 打开街道 map (osmdroid) 在 PC 中显示灰色瓷砖而不是 map

Linux 中的 C 程序读取作为终端参数传递的文件描述符

c++ - 将数组分成较小的连续部分,使 NEO 值最大

linux - 如何同时运行两个命令?