如何将XAML笔刷转换为Direct2D笔刷?

如何将XAML笔刷转换为Direct2D笔刷?,xaml,direct2d,microsoft-metro,Xaml,Direct2d,Microsoft Metro,我正在开发一款Metro风格的应用程序。在地铁里,你可以。我正在创建一个XAML用户控件,该控件使用共享曲面在Direct2D中渲染某些内容。我希望能够在XAML中指定一个笔刷,用于在Direct2D中填充几何体 我认为我需要能够将a转换为。Direct2D接口与XAML类有着密切的对应关系。但是,有几件事您无法仅用ID2D1Brush复制或模拟,例如Transform与RelativeTransform。如果查看TileBrush或LinearGradientBrush.MappingMode

我正在开发一款Metro风格的应用程序。在地铁里,你可以。我正在创建一个XAML用户控件,该控件使用共享曲面在Direct2D中渲染某些内容。我希望能够在XAML中指定一个笔刷,用于在Direct2D中填充几何体


我认为我需要能够将a转换为。

Direct2D接口与XAML类有着密切的对应关系。但是,有几件事您无法仅用
ID2D1Brush
复制或模拟,例如
Transform
RelativeTransform
。如果查看
TileBrush
LinearGradientBrush.MappingMode
,情况会变得更糟。您需要为
ID2D1RenderTarget
创建自己的包装器,该包装器考虑了比一般情况下可用的更多的因素

Direct2D是一个低级绘图API,而XAML类是一个更大的表示/用户界面框架的一部分(它减少了WPF/Silverlight)。如果您不担心无法复制或模拟的属性,那么只需创建一些静态实用程序方法来在两者之间进行转换