2012-08-11 93 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。