Существует ли API для рисования фигур высокого уровня для C или C ++? - PullRequest
1 голос
/ 25 сентября 2011

Я начинаю новый проект (приложение для Windows), которому нужен простой графический интерфейс. Графика не является основной целью приложения, алгоритмы, лежащие в ее основе, так что я хотел бы потратить как можно меньше времени на обдумывание графики.

Мне нужно нарисовать простые фигуры, соединить их линиями и обозначить как фигуры, так и края. Мой идеальный API будет выглядеть примерно так:

 n1 = Rectangle(width, height, center1);
 n1->label("Node1");
 n2 = Circle(radius, center2);
 l = Line(n1->rightEdge()->midpoint()), (n2->center()-Point(n2->radius,0));
 l->label("pathway",BELOW);

Я знаю, что, безусловно, мог бы использовать низкоуровневую библиотеку для создания этого уровня абстракции. Но я бы предпочел не делать этого, если это уже сделано. Существует ли графическая библиотека с таким уровнем абстракции? Я был бы одинаково счастлив с C / C ++. C # тоже будет вариант.

Ответы [ 5 ]

1 голос
/ 25 сентября 2011

Из-за общей простоты написания такого рода высокоуровневой системы, учитывая низкоуровневый API рисования, вы, как правило, не видите библиотеку графиков 2D сцен.То, где в сцене присутствуют явные объекты, и вы перемещаете объекты на уровне объектов.

Наиболее близким, что я могу придумать, является способ, которым WPF обрабатывает рисование, где вы создаете графические объекты и присоединяете ихк окнам.И это только .NET.

Все остальное, будь то Cairo, AGG, Direct2D и т. Д. - все это API для непосредственного рисования.Нет «объектов», которыми вы манипулируете или прикрепляете ярлыки.Вы просто рисуете вещи в локации.Если вы хотите что-то переместить, вы должны нарисовать вещи в этом новом месте.

0 голосов
/ 25 сентября 2011

Вы также можете попробовать с qt lib Qt - отличный инструментарий и мультиплатформа

0 голосов
/ 25 сентября 2011

Существует новый Direct2D API для Windows от Microsoft, в основном предназначенный для векторной графики.

0 голосов
/ 25 сентября 2011

возможно AGG будет работать для вас. если вы сделаете шаг назад на несколько оборотов, вы также найдете лицензию, которая лучше подходит для коммерческой разработки.

0 голосов
/ 25 сентября 2011

Я использую SDL для своих графических нужд. Я использую его только для контекста OpenGL (с которым он отлично справляется), но он довольно удобен для работы эффективной и переносимой графики. Если вы не хотите иметь дело с OpenGL, вам доступны процедуры рисования программного обеспечения.

...