2012-08-11 43 views
1

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

从我读过的东西,WPF的做法是有一个VisualBrushDrawingBrush组成的形状,但目前还没有这样的类在Windows 8(和它看起来像它甚至不能从Brush派生)。

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

+0

建议:忘记XAML,并尝试使用HTML5 Canvas在JavaScript中实现您想要的内容:http://blogs.msdn.com/b/eternalcoding/archive/2012/03/22/unleash-the-power-的-HTML-5帆布换游戏,部分1.aspx。还请查看此链接(许多类似链接之一 - 并且没有新增内容):http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/54a99549-c634-4d45-87d6-15fd3bab483b/ – paulsm4 2012-08-12 01:19:47

+0

PS:你不应该说“地铁”了;)http://www.tomshardware.com/news/Metro-UI-Windows-8-Windows-Phone-Xbox,16784.html – paulsm4 2012-08-12 01:23:03

+0

@ paulsm4我知道这在HTML中是可行的,但我喜欢C#和XAML(至少在它工作时),这就是我想要使用的技术。是的,我知道“Metro”术语将被逐步淘汰,但“Windows 8”或“现代”替代术语使得桌面应用程序对我的口味而言听起来太多了遗憾:) – Trillian 2012-08-12 15:51:32

回答

1

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

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

+1

谢谢杰瑞!很高兴收到您的来信,我是您博客的追随者。让我们希望这个功能可以在未来更新。 – Trillian 2013-02-11 18:23:45

+0

是的,它与我的心愿单中有RadialBrush。 – 2013-02-11 18:43:26

0

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

+0

是的,它可以工作,但不会缩放那么因为所有的控件实例都具有应用程序可以显示的所有可能图形的形状。希望有更好的解决方案。 – Trillian 2012-08-16 01:02:34

0

Windows8中有矢量图形的方法就是使用ViewBox + Canvas和Path元素。它在我看来很好,但我确实错过了VisualBrush。