Как легко сделать графику в современном Linux?

Вот пример программы на 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();
}

Я думаю, что это был турбо C под MSDOS. Он дает вам рисунок на экране и может быть легко расширен для создания быстрой анимированной графики, такой как те, которые можно найти в хаках xscreensaver.

Как мне написать эквивалент в gcc на Ubuntu? Можно ли это сделать на Java?


person John Lawrence Aspden    schedule 06.05.2014    source источник
comment
Что вы имеете в виду эквивалентно в gcc?   -  person drum    schedule 07.05.2014
comment
Я имею в виду, могу ли я просто нарисовать что-то легко, или мне придется потратить три страницы кода на согласование разрешения с X?   -  person John Lawrence Aspden    schedule 07.05.2014
comment
@JohnLawrenceAspden Что вы узнали из своего исследования graphics.h в Linux?   -  person admdrew    schedule 07.05.2014
comment
Вот демонстрация JavaFX. Сначала вам нужно установить JavaFX, но как только он запустится, вы сможете увидеть код для демонстрации и поэкспериментировать с ним. oracle.com/technetwork/java/javase/overview/   -  person Peter Lawrey    schedule 07.05.2014
comment
Просто замечание: графика BGI была какой угодно, только не быстрой. Это было нормально для графики с низким разрешением, но даже тогда это было намного медленнее, чем те же графические подпрограммы, написанные на ассемблере.   -  person xxbbcc    schedule 07.05.2014
comment
если вы хотите рисовать в окне, в java вы можете использовать класс Graphics, который поможет вам рисовать объект на поверхности, для консоли, я думаю, вам нужна некоторая библиотека зависимостей ОС. docs.oracle.com/javase/7/docs/ API/java/awt/Graphics.html   -  person WileTheCoyot    schedule 07.05.2014


Ответы (2)


Итак, несколько слов об основах:

  1. В приведенном вами примере используется библиотека BGI - Borland Graphics Interface - очень старый материал из эпохи MS DOS.
  2. Сам GCC - это просто компилятор - вы должны искать библиотеку, поддерживающую рисование
  3. В Linux мы используем несколько наборов инструментов с графическим интерфейсом, но в настоящее время актуальны только Gtk и Qt.
  4. Если вам нужна графическая библиотека низкого уровня, вы можете посмотреть на Allegro (http://alleg.sourceforge.net/ ) или SDL (http://www.libsdl.org/)

А если серьезно, я думаю, вы смотрите не в ту сторону. Вы должны сосредоточиться на современном программировании графического интерфейса, управляемом событиями, с использованием современных наборов инструментов (Gtk, Qt), современных языков (C++, C#, Java, Python и т. д.) и OpenGL для «спецэффектов».

person ezaquarii    schedule 06.05.2014

Вы должны понимать, что в Linux графика обычно выполняется через X11 (возможно, Wayland может стать конкурентом в будущем).

Тогда вам следует использовать набор инструментов X11. Если вы хотите его на C, рассмотрите GTK или libSDL. Но если вы знаете C++, я бы порекомендовал Qt (прочитайте о его графические возможности).

Вы можете найти несколько коротких примеров программ Qt, Gtk или SDL примерно в сотне строк.

Java имеет как минимум Swing.

Обратите внимание, что Linux по своей сути является многозадачной системой. Итак, вы хотите запустить несколько графических программ. Другими словами, вам нужно несколько окон (и диспетчер окон или рабочего стола). Итак, вам нужен цикл событий, и вам нужно позаботиться об изменении размера и/или перекрытии окон. Следовательно, сложность намного выше, чем во времена TurboC прошлого века!

В качестве альтернативы рассмотрите возможность сделать ваше приложение специализированным HTTP-сервером (и кодируйте графику в HTML5), например. используя libonion в качестве библиотеки C HTTP-сервера.

person Basile Starynkevitch    schedule 06.05.2014