Что делает элементы управления WinForm, размещенные в приложении WPF?
Из статьи MSDN я узнал, что элементы управления WinForm могут быть размещены в приложении WPF с помощью HwndHost
,
Кроме того, из других интернет-ресурсов я обнаружил, что WPF отображается с использованием DirectX, а WinForm - с помощью GDI+.
Мой вопрос заключается в том, что делает элемент управления WinForm, когда элемент управления WinForm рисуется в приложении WPF; DirectX, GDI+ или оба?
У меня очень мало опыта работы с обеими технологиями и создания маленьких шагов.
Спасибо
2 ответа
Вы ошибаетесь в требовании HwndHost
отобразить элемент управления Windows Forms в приложении WPF. Статья, которую вы читали, предназначена для взаимодействия Win32, а не для Windows Forms. Чтобы использовать элемент управления Windows Forms в приложении WPF, необходимо использовать WindowsFormsHost
Класс
Что касается визуализации элемента управления Windows Forms, вам нужно кое-что понять. WPF использует совершенно другую графическую систему для Windows Forms. На странице обзора визуализации графики WPF в MSDN:
Одним из ключей к пониманию роли визуального объекта является понимание разницы между графическим системами с непосредственным режимом и режимом с сохранением. Стандартное приложение Win32 на основе GDI или GDI+ использует графическую систему непосредственного режима. Это означает, что приложение отвечает за перерисовку части клиентской области, которая признана недействительной, из-за действия, такого как изменение размера окна или объекта, изменяющего свой внешний вид.
Напротив, WPF использует систему с сохранением режима. Это означает, что объекты приложения, имеющие визуальный вид, определяют набор сериализованных данных чертежа. После того как данные чертежа определены, после этого система отвечает за ответы на все запросы на перерисовку для визуализации объектов приложения. Даже во время выполнения вы можете изменять или создавать объекты приложения и при этом полагаться на систему, отвечающую на запросы рисования. Преимущество графической системы с сохранением режима заключается в том, что информация о чертеже всегда сохраняется в сериализованном состоянии приложением, но ответственность за нее возлагается на систему.
Поэтому в целом система рендеринга WPF будет WindowsFormsHost
, хотя вы можете обнаружить, что Windows Forms действительно выполняет некоторую собственную визуализацию в элементе управления Windows Forms.
Вы должны понимать WPF и Win32 Interoperation, это показывает, как отображаются элементы управления.
С другой стороны, в Обзоре технологических регионов объясняется взаимосвязь между Wind32, WPF и DirectX.
Надеюсь, это сделает вас более ясным об этом..!!!