2012-06-12 2 views
0

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

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

ответ

1

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

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

Смежные вопросы