【问题标题】:Can I have a composite shape as a resource in WinRT XAML?我可以将复合形状作为 WinRT XAML 中的资源吗?
【发布时间】:2014-03-04 10:45:41
【问题描述】:

我正在开发一个 Windows 8 Metro 风格的应用程序,我想使用矢量图像。由于似乎没有对 svg 图像的直接支持,我尝试使用由多个形状(路径和一些线)组成的 xaml 片段作为图像。我想要一个具有复合形状的资源字典条目,并能够将其包含在不同的页面中。理想情况下,我还希望能够从数据绑定属性中解析特定的复合形状。

根据我的阅读,WPF 方法是使用由形状组成的 VisualBrushDrawingBrush,但在 Windows 8 中没有这样的类(而且似乎甚至不可能从Brush)。

我应该如何使用 WinRT UI 做到这一点?

【问题讨论】:

标签: windows-8 winrt-xaml windows-store-apps drawingbrush


【解决方案1】:

不,您不能将 DrawingBrush 用作 WinRT XAML 中背景属性的值。太糟糕了,是吗?使用矢量布局设置对象的填充似乎是一个非常强大的功能。事实上,DrawingBrush 甚至还不是 Windows 8 的一部分。就是这样。目前,图像是一个很好的解决方案。但我们能感受到你的痛苦。

我不妨折腾一下,VisualBrush 也不是 WinRT-XAML 的一部分。

【讨论】:

  • 谢谢杰瑞!很高兴收到你的来信,我是你博客的追随者。让我们希望这个功能能够在未来的更新中实现。
  • 是的,它在我的 RadialBrush 愿望清单上。
【解决方案2】:

每个 XAML 片段实际上都是一个 UI 元素。我认为最简单的方法是将 XAML 放入它自己的用户控件中,然后将用户控件添加到您想要在其上显示“绘图”的每个页面。如果您希望用户控件显示不同的形状,您可以在控件上公开一个属性,将数据绑定到该属性,然后在属性的设置器中读取值并切换各种 XAML 形状的可见性以显示或隐藏任何内容您想要的合成图像的一部分。这有点蛮力,但会做你想做的。

【讨论】:

  • 是的,这可以工作,但它不能很好地缩放,因为所有控件实例都具有应用程序可以显示的所有可能图形的形状。希望有更好的解决方案。
【解决方案3】:

Windows8 中添加矢量图形的方法就是使用 ViewBox+Canvas 和 Path 元素。我认为它运行良好,但我确实想念 VisualBrush。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多