Проведя довольно много времени с помощью Direct2D (1_1), я ищу информацию о создании автономных элементов управления с Direct2D, в первую очередь с помощью макета для тестирования и абстрагирования.Хорошая стратегия для создания автономных элементов управления Direct2D
Создание всей сцены достаточно просто (спасибо Кенни Керру), однако я не нашел хорошей стратегии для разделения кода на компоненты многоразового интерфейса.
В конечном итоге я также хотел бы предоставить оболочку этим элементам управления, которые также могут быть использованы в WPF. Спасибо за вашу помощь.
[EDIT 19 февраля - 7 утра]
Рассмотрим очень простой пример: рендеринга (или Draw) функция делает несколько скругленные Rect геометрий, некоторые из которых перекрываются. Теперь давайте рассмотрим каждый из этих закругленных прямоугольников как независимый контроль ui. Таким образом, мы абстрагируем, что закругленный прямоугольник в свой класс, предоставляем функцию рендеринга, которая имеет параметр цели рендеринга и точку, в которой нужно рисовать. Но многое еще нужно рассмотреть. Контроль не обязательно должен знать, где он находится. Важной будет и общая стратегия тестирования ударов, которую наша система может продолжать наращивать.
Как указано в @CodeAngry, должны быть реализованы свойства, такие как видимые, активированные, zOrder, ширина, высота и т. Д. Но система компоновки должна быть нашей отправной точкой.
Все это невероятно сложно, однако я знаю, что этот материал выполняется каждый день, и я надеялся найти какую-то модель или стратегию для рассмотрения. Еще раз спасибо.
Это сложный вопрос, и тот, который я не уверен, обязательно соответствует типичному вопросу, заданному в stackoverflow. Это скорее вопрос дизайна, чем вопрос программирования. Также я чувствую, что вопрос неудобно сформулирован, поэтому я не совсем уверен, что вы ищете. – leetNightshade
Вы не упомянули об этом, но я предполагаю, что вы используете WPF для обработки ввода? Никогда не использовал это сам, только DirectInput или XInput в приложениях C++ Windows. Не знаете, что вы подразумеваете под автономным контролем, можете ли вы уточнить? Вы пытаетесь создать портативный абстрактный интерфейс, который можно использовать в разных API/платформах? Вы ищете абстрактные действия над абстрактным кодом управления? Вам нужно выяснить, что именно вы хотите, и уточнить. Вопрос такой расплывчатый. – leetNightshade
* FUNNY *: В настоящее время я работаю над пользовательским интерфейсом без окон для собственного C++, созданного на D2D1 и DW и WIC. Я нахожусь на том же самом шаге, что и вы, делая первичный HWND визуализирующим поверхность прокручиваемым, взаимодействуя с элементами управления, а затем создавая настраиваемые элементы управления. Но я пишу его для родного C++, а не с поддержкой C#. – CodeAngry