Подтвердить что ты не робот

С++ Analogue для WPF

Итак, я недавно обманул WPF, и я должен сказать, что мне очень нравится эта идея. Мне нравится каркас в целом, от GUI до сантехники.

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

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

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

  • Декларативный язык для GUI-дизайна (желательно диалект XML)

  • Связывание данных

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

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

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

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

4b9b3361

Ответ 1

  • На самом деле ничего подобного нет. Во всяком случае, это не межплатформенная платформа. Direct2D работает достаточно хорошо, но, очевидно, является Windows-only. И NVIDIA недавно отказалась от этого "пути" расширения OpenGL, который похож на базовую функциональность, но это NVIDIA-only (и недоступно в Mac OSX). Каир имеет бэкэнд OpenGL, но я понятия не имею, насколько он хорош. Это не может быть так хорошо, если Mozilla выбрасывает Каир в пользу D2D в Windows.
  • Многие графические инструменты GUI имеют определенный язык для создания графического интерфейса. Qt имеет тот, который предварительно скомпилирован в С++.
  • Не то, чтобы я знал. Связывание данных требует некоторой формы отражения (привязка данных в стиле WPF делает), а С++ не имеет встроенной поддержки для отражения. Таким образом, вам нужно будет реализовать отражение какого-то рода, прежде чем вы сможете даже начать работу с привязкой данных в стиле WPF.
  • Это с №1. Более или менее, поскольку любой рендеринг на основе графического процессора сможет работать с произвольными разрешениями.

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