C ++ аналог для WPF - PullRequest
       4

C ++ аналог для WPF

18 голосов
/ 05 августа 2011

Так что я недавно немного дурачился с WPF, и должен сказать, что мне действительно нравится эта идея.Я люблю фреймворк в целом, от GUI до сантехники.

Однако, так же, как я люблю управляемую землю, я так же люблю свой нативный код.Поэтому мне интересно, какие существуют библиотеки для C ++, которые отражают сущность различных частей WPF.Я не ищу решения для взаимодействия и не хочу решения для Managed C ++ или C ++ / CLI, а только решения для чистого C ++.

Теперь я не ожидаю найти «копию» WPF для C ++ -Я не ожидал бы, что это будет существовать, и не нуждался бы в этом.Вместо этого я ожидаю, что разные библиотеки могут захватить подмножество желаемых концепций.Мои особые интересы:

  1. Графика с аппаратным ускорением для графических интерфейсов на основе виджетов (через DirectX или OpenGL, предпочтительно последний)

  2. Декларативный язык для проектирования графического интерфейса(предпочтительно диалект XML)

  3. Привязка данных

  4. Независимость разрешения (менее важно)

Чтобы немного рассказать о моих рассуждениях, я хотел бы реализовать такую ​​библиотеку самостоятельно, которая отражает конкретную модель, которую я начал разрабатывать.Я нахожусь в процессе поиска вдохновения и полезных ресурсов, прежде чем заблокировать свой дизайн.Библиотека предназначена для кроссплатформенности, поэтому ссылки на кроссплатформенные идеи были бы хороши, но не являются строго необходимыми, поскольку я обычно способен переводить вещи в кроссплатформенные решения.

Наконец, хотя янаписание библиотеки C ++ и идей на C ++ было бы здорово, я открыт для идей на любом родном языке.

Заранее благодарен за любую помощь.

Ответы [ 2 ]

10 голосов
/ 05 августа 2011
  1. На самом деле ничего подобного нет. Во всяком случае, не кроссплатформенный. Direct2D работает достаточно хорошо, но, очевидно, только для Windows. Кроме того, NVIDIA недавно отказалась от расширения «пути» OpenGL, которое схоже по базовой функциональности, но оно доступно только для NVIDIA (и недоступно в Mac OSX). Каир имеет бэкэнд OpenGL, но я понятия не имею, насколько он хорош. Это не может быть хорошо, если Mozilla отказалась от Cairo в пользу D2D для Windows.
  2. Многие инструментарии GUI имеют некоторую форму языка для создания GUI. У Qt есть тот, который предварительно скомпилирован в C ++.
  3. Не то, что я знаю. Привязка данных требует некоторой формы отражения (привязка данных в стиле WPF делает), а C ++ не имеет встроенной поддержки отражения. Так что вам нужно будет реализовать какое-то отражение, прежде чем вы сможете начать работать с привязкой данных в стиле WPF.
  4. Это идет с # 1. Более или менее, поскольку любой рендерер на основе графического процессора сможет работать с произвольным разрешением.

Я люблю C ++, но, честно говоря, такого рода вещи лучше всего реализовать для языка более высокого уровня. Отсутствие поддержки рефлексии на основе языка сделает реализацию привязки данных огромной болью. Принимая во внимание, что вы могли бы просто реализовать низкоуровневый «рендеринг материала в область» и базовое управление окнами / событиями в C ++, а затем представить его на языке сценариев, где привязка данных и такая работа. Таким образом, у вас есть собственная скорость кода там, где вам это нужно, но универсальность и отражение языка сценариев для работы с GUI и связанными с ним данными.

3 голосов
/ 20 февраля 2015

Я опоздал на несколько лет, но в интересах всех, кто читает этот вопрос: вы ищете Qt Quick / QML:

http://qt -project.org / doc /qt-4.8 / qml-intro.html

http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...