Надеюсь, этот вопрос не слишком субъективен. Я хотел бы запустить собственный простой набор инструментов UI в C++, то есть библиотеку, которая может создавать пользовательский интерфейс на многих платформах (более или менее упрощенную версию основ QT), предоставляя все свои элементы управления. Я делаю это ради учебы, поэтому, пожалуйста, воздержитесь от публикации . Вы не должны изобретать велосипед, так как конкурировать с основными инструментами пользовательского интерфейса действительно не моя цель.Запуск моего собственного простого инструментария пользовательского интерфейса
Вопрос: какой API я должен использовать для Windows и Linux для создания своего инструментария?
Я исследовал немного, и я полагаю, что я должен рисовать все с помощью GDI + в Windows и, возможно, cairo в Linux (не уверен в этих двух).
Рисование интерфейс с OpenGL, вероятно, выполнимо, но
- Потребует путь больше работы
- бы, наверное, не самое лучшее, что делать, так как OPENGL серия примитивов оптимизированная для 3D-графики, а не 2D те
Вопрос в том, какой API я должен использовать для Windows и Linux для запуска этого проекта? Надеюсь, я сузил его достаточно, чтобы объективно его подобрать.
GDI + будет обслуживать практически все ваши 2D-требования в Windows. Основных вызовов GDI почти всегда будет достаточно. – cppguy
@cppguy Проблема с GDI + заключается в том, что она существует только для Windows (и в Wine). Если вы рисуете, используя GDI + в Windows, вы получите разные результаты, чем рисование с использованием других систем рисования. Таким образом, использование встроенного GDI + в кросс-платформенном наборе инструментов - очень плохая идея, это приводит к большему количеству проблем, чем оно решает. Можно использовать GDI + из Wine, или Cairo, или, возможно, Blend, когда это станет доступным ... –
Пользовательский интерфейс MS-Windows и протокол X, используемые в Linux, не могут быть более разнородными. Какой бы вы ни выбрали, ваша работа, как правило, очень мало, на другой платформе. Кросс-платформенные инструментальные средства, такие как QT, как правило, либо несколько неудобны на платформах, отличных от тех, на которых они основаны; или, чтобы обеспечить межплатформенную функциональную совместимость, они ограничивают себя небольшой функциональностью на всех платформах и не могут воспользоваться уникальными функциями каждой платформы. –