Pull to refresh

Comments 15

Всё это очень интересно, но как этим пользоваться в условиях MVVM?
Win2D это:
— отскок в сторону от MVVM, нет привычного Binding, вся графика code behind
— развитие GDI+ поверх Direct3D (для любителей WinForms очень простой переход)
— ускорение графики раз в 100 в сравнении с MVVM векторной графикой.

Поэтому, если элементов у вас немного, тогда MVVM. Если элементов много или много анимации — Win2D.
Можно мешать MVVM и Win2D, т.к. CanvasXXX (а их сейчас уже четыре) является обычной прямоугольной областью, которая встраивается в визуальное дерево XAML
это скорее развитие Direct2D, чем GDI. У них схожее API в чем-то, но первый гораздо быстрее.

Так то его можно использовать и начиная с Windows 7(Vista если есть Platform Update), но всякие новомодные эффекты ввели только с 8/8.1
Есть библиотечки типа SharpDX, которые дают доступ к Direct2D даже для WinForms и WPF, отлично работают.

На мой взгляд, это не отскок, это логика на стороне view. Никто ведь не мешает создавать и использовать зависимые свойства при работе с win2d.
А библиотеку для графиков не находили? Чтобы 10к разных можно было рисовать.
Графики 2D функции, y=f(x)?

1. Нарисовать сетку
2. Нарисовать 10к Polyline полупрозрачных, чтобы лучше были видны сгустки.

По минимуму можно в десяток строк кода уложиться.
Нет, ну нужно же чтобы нормально работало на разных диагоналях экрана и ориентации.
Плюс lifetime подхватывать. Не так уж и просто.
Последняя картинка напомнила, как я экспериментировал с аппроксимацией изображений полигонами. Дальше треугольников не продвинулся, к сожалению.
image
а как рисовать анимацию? например нарисовать прямоугольник при движении мыши?
или сделать прямоугольник что-бы пульсировал и при этом мышью рисовать что-то вокруг?
Есть ли где-нибудь пример, как с помощью этого нарисовать тень от элемента?
Для сравнения нужно тесты писать.
Можно попробовать отобразить фрагменты OpenStreetMap.
Поддерживаю, тем более учитывая наличия Skia Sharp, необходимость в Win2D сомнительна.

Win2d тормоз жуткий. Максимум что вы с него сможете выжать это 10`000 линий/прямоугольников/вообще объектов.
Вывод текста (метод drawText) — это вообще пиши пропало.
Единственное но — у него есть возможность рисовать spriteBatch (вывод картинки) — только в этом случае производительность будет реально упираться в GPU (для примера у меня более миллиона 1000х1000 картинок может вывести).


Для примера qt — 200`000 линий рисует при 60 фпс.
При первой же возможности переходите на SkiaSharp (если нужен C#).


P.S. Более того skia с ganesh surface'ом (opengl/directx аппаратное ускорение) умеет использовать NV_path_rendering. Практически в 100 раз быстрее остальных способов (на сайте нвидии демки есть, можете попробовать).

Sign up to leave a comment.

Articles