我正在开发 Metro Style 应用程序。在 Metro 中,您可以混合使用 XAML 和 DirectX。我正在创建一个 XAML 用户控件,它使用共享表面在 Direct2D 中呈现某些内容。我希望能够在 XAML 中指定一个画笔,我可以使用它来填充 Direct2D 中的几何图形。
我认为我需要能够将Windows::UI::Xaml::Media::Brush转换为ID2D1Brush。
我正在开发 Metro Style 应用程序。在 Metro 中,您可以混合使用 XAML 和 DirectX。我正在创建一个 XAML 用户控件,它使用共享表面在 Direct2D 中呈现某些内容。我希望能够在 XAML 中指定一个画笔,我可以使用它来填充 Direct2D 中的几何图形。
我认为我需要能够将Windows::UI::Xaml::Media::Brush转换为ID2D1Brush。
Direct2D 接口与 XAML 类有着密切的对应关系。但是,有几件事您将无法仅使用 复制或模拟ID2D1Brush
,例如Transform
vs. RelativeTransform
。如果您查看类似TileBrush
or的内容,情况会变得更糟LinearGradientBrush.MappingMode
。您需要创建自己的包装器,ID2D1RenderTarget
其中考虑的因素比通常可用的更多。
Direct2D 是一个低级绘图 API,而 XAML 类是更大的表示/UI 框架的一部分(它是缩减的 WPF/Silverlight)。如果您不担心无法复制或模拟的属性,那么只需创建一些静态实用程序方法来在两者之间进行转换。