Как преобразовать кисть XAML в кисть Direct2D?

Я работаю над приложением в стиле Metro. В Metro вы можете смешивать XAML и DirectX. Я создаю пользовательский элемент управления XAML, который использует общую поверхность для визуализации некоторого содержимого в Direct2D. Я хочу иметь возможность указать кисть в XAML, которую я могу использовать для заполнения геометрии в Direct2D.

Я думаю, что мне нужно уметь преобразовать Windows :: UI :: Xaml :: Media :: Brush в ID2D1Brush.


person petrsnd    schedule 12.06.2012    source источник


Ответы (1)


Интерфейсы Direct2D очень похожи на классы XAML. Однако есть несколько вещей, которые вы не сможете скопировать или эмулировать, используя только ID2D1Brush, например, Transform vs. RelativeTransform. Ситуация становится намного хуже, если вы посмотрите на такие вещи, как TileBrush или LinearGradientBrush.MappingMode. Вам нужно будет создать свою собственную оболочку для ID2D1RenderTarget, которая учитывала бы больше факторов, чем обычно доступно в противном случае.

Direct2D - это низкоуровневый API для рисования, тогда как классы XAML являются частью более крупной платформы представления / пользовательского интерфейса (это урезанный WPF / Silverlight). Если вас не беспокоят свойства, которые нельзя скопировать или эмулировать, просто создайте несколько статических служебных методов для преобразования между ними.

person Rick Brewster    schedule 12.06.2012