Windows Presentation Foundation (WPF)

Windows Presentation Foundation (или сокращенно — WPF) — это платформа для построения пользовательского интерфейса, не зависящая от разрешения и использующая векторный механизм визуализации, способный использовать все преимущества современного графического оборудования. Так, если при разработке графического приложения с использованием WinForms преимущественно используются  GDI/GDI+, то WPF использует DirectX.

Платформы построения графического интерфейса в Windows

На момент написания этого руководства, создание графического интерфейса приложений для Windows может осуществляться с использованием сразу нескольких платформ:

1. Windows Forms. На данный момент эта платформа представлена двумя реализациями: с открытым исходным кодом, которая выполняется в .NET и версия для .NET Framework (ныне считающейся устаревшей платформой). Эта платформа в полной мере использует концепцию RAD (от англ. rapid application development — быстрая разработка приложений). Ключевая особенность этой платформы — наличие конструктора форм. То есть Вы просто перетаскиваете на форму необходимые элементы, позиционируете их, настраиваете свойства, используя удобные редакторы и графический интерфейс приложения готов. Вот, например, как выглядит конструктор формы в Visual Studio 2022:

Безусловным преимуществом Windows Forms является скорость разработки. Наличие достаточно большого количества готовых к использованию компонентов позволяет достаточно быстро «накидать» интерфейс приложения, а затем создать всю необходимую логику работу приложения используя обработчики событий компонентов.

2. WPF (Windows Presentation Foundation) — относительно старая и проверенная временем платформа, использующая для построения графического интерфейса приложения декларативный язык разметки XAML. Именно об этой платформе пойдет речь далее.

3. WinUI — платформа для разработки приложений для Windows, которая также использует XAML для построения графического интерфейса. Корпорация Microsoft позиционирует эту платформу как следующий шаг в направлении разработки графических интерфейсов приложений Windows. Приложения, построенные с использованием WinUI используют Fluent Design по умолчанию.

4. Blazor Hybrid — изначально, фреймворк Blazor разрабатывался с целью создания веб-приложений с богатым графическим интерфейсом. Однако, Blazor Hybrid позволяет создавать кроссплатформенные приложения для Windows, MacOS, iOS и Android, используя для построения графического интерфейса Razor — это специальный язык разметки, позволяющие использовать инструкции и блоки кода C# внутри html-разметки. Появление Blazor Hybrid стало возможным, благодаря выходу другой платформы — платформы .NET MAUI.

5. NET Multi-platform App UI или сокращенно .NET MAUI — это кроссплатформенный фреймворк для создания мобильных и классических приложений с помощью C# и XAML для операционных систем Windows, Android, iOS и MacOS, позволяющий использовать при создании приложений единую кодовую базу.

Как видите, для разработки приложений Windows с графическим интерфейсом мы можем использовать сразу пять различных платформ и три из них используют для построения графического интерфейса декларативный язык разметки XAML.

В этом руководстве мы сосредоточимся на изучении WPF (Windows Presentation Foundation) как наиболее устоявшейся и надежной платформы, которая поддерживается и будет поддерживаться далее, несмотря на наличие WinUI и .NET MAUI.

Преимущества WPF

Широкая интеграция

До появления WPF разработчикам в Windows, которые хотели использовать одновременно ЗD-графику, видео, речевые технологии, работу с документами и так далее могло понадобиться изучать несколько независимых технологий, которые могли быть, к тому же, плохо совместимы между собой. В WPF все это входит в состав согласованной модели программирования, поддерживающей композицию и визуализацию разнородных элементов. Одни и те же эффекты применимы к различным видам мультимедийной информации, а один раз освоенная техника может использоваться и для других целей.

Независимость от разрешения экрана

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

Аппаратное ускорение

Поскольку в основе WPF лежит использование технологии DirectX, то содержимое в WPF-приложении, будь то кнопка, изображение или текст, преобразуется объекты Direct3D, а затем отрисовываются, используя графический процессор видеокарты . Таким образом, WPF-приложения задействуют все возможности аппаратного ускорения графики, что позволяет добиться более качественного изображения и одновременно повысить производительность (поскольку часть работы перекладывается с центральных процессоров на графические).

При этом, WPF не требует обязательного наличия высокопроизводительной видеокарты. В ней имеется и собственный программный конвейер визуализации. Это позволяет использовать возможности, которые пока еще не поддерживаются аппаратно (например, осуществлять высокоточное отображение любого содержимого на экране). Программная реализация используется и как запасной вариант в случае отсутствия аппаратных ресурсов (например, если в системе стоит устаревшая графическая карта, или карта современная, но GPU не хватает ресурсов, скажем, видеопамяти).

Декларативное программирование

Хотя декларативное программирование не является уникальной особенностью WPF, в WPF применение декларативного программирования вышло на новый уровень благодаря языку XAML (extensible Application Markup Language — расширяемый язык разметки приложений). Сочетание WPF и XAML можно сравнить с использованием HTML для описания пользовательского интерфейса, но с гораздо более широкими выразительными возможностями. И эта выразительность выходит далеко за рамки описания интерфейса.

В WPF язык XAML, в основном, применяется в качестве описания интерфейса приложения. Использование XAML, с одной стороны, может стать небольшим препятствием для изучения и работы с WPF, особенно, если до этого вы долгое время использовали WinForms. Однако, с другой стороны, благодаря такому подходу, мы можем полностью отделить интерфейс приложения от логики — дизайнеры «рисуют» красивый привлекательный интерфейс приложения, не задумываясь о бизнес-логике, программисты — пишут бизнес-логику.

Богатые возможности композиции и настройки

В WPF элементы управления могут сочетаться самыми немыслимыми и причудливыми способами. Например, можно создать комбинированный список, содержащий анимированные кнопки, или добавить в кнопку рисунок и так далее.  Раньше, для таких «чудес» нам бы пришлось писать довольно много кода, в WPF — это делается достаточно просто и, в некотором роде, даже интуитивно понятно. Кроме того, стоит отметить, что в WPF можно без особого труда изменить тему оформления (скин, обложку) приложения.

Итого

По сравнению с WinForms, WPF обладает рядом преимуществ, главные из которых — это использование аппаратного ускорения и независимость от разрешения экрана. При этом, если вы переходите на работу с WPF всё с той же WinForms или вообще из другого языка программирования, например, Delphi, то, в начале, эта платформа может показаться достаточно сложной. В основном, благодаря тому, что в WPF используется XAML и то, что ранее решалось простым перетаскиванием элементов управления из тулбокса на форму и написанием обработчиков событий, теперь придётся делать более «цивилизованным» способом, отделяя графику от бизнес-логики. Хотя, справедливости ради, стоит отметить, что и для WPF можно использовать достаточно большое количество стандартных элементов управления, доступных в ToolBox, но это уже другая история и об этом мы поговорим в дальнейшем, по мере углубления в тему WPF C#.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии