2011-02-02 45 views
5

我想在xaml中放置一些圖標。這些圖標是這樣的一個多邊形:可重複使用的多邊形

<Polygon Points="0,0 20,50, 0,50 20,0" Fill="Red" Stretch="Uniform"/> 

但我想用一個圖標幾次,所以我要在資源定義它,並通過引用到畫布在某個位置包括它,好歹這樣:

<Page.Resources> 
    <Polygon Key="icon1" Points="0,0 20,50, 0,50 20,0" Fill="Red" Stretch="Uniform"/> 
    <Polygon Key="icon2" Points="0,0 10,30, 10,60 20,0" Fill="Blue" Stretch="Uniform"/> 
    ... 
</Page.Resources>  
<Canvas> 
    <Polygon Reference="icon1" X="0" Y="0"/> 
    <Polygon Reference="icon2" X="10" Y="10"/> 
    <Polygon Reference="icon1" X="20" Y="20"/> 
    ...   
</Canvas> 

我發現了一個可能的解決方案上http://www.codeproject.com/KB/WPF/GraphicInXAMLAndWPF.aspx在多邊形存儲在繪畫圖像,但似乎是開銷很大。

有人有一個更好的主意如何解決這個問題?

回答

7

可能最明顯和最靈活的方法是創建一個UserControl。您可以從解決方案資源管理器中添加一個新的UserControl類型的文件,將您的Polygon添加到Visual Studio將創建的'LayoutRoot'Grid中。然後,您可以根據您的用戶控件創建儘可能多的實例!

但是,檢查SO上的類似問題,您可以使用內容控件來渲染多邊形,請注意,您必須使用x:Shared =「false」來確保您不嘗試重新使用每次都是相同的多邊形。

<Page.Resources> 
    <Polygon x:Key="icon1" x:Shared="False" 
      Points="0,0 20,50, 0,50 20,0" Fill="Red" Stretch="Uniform"/> 
    <Polygon x:Key="icon2" x:Shared="False" 
      Points="0,0 10,30, 10,60 20,0" Fill="Blue" Stretch="Uniform"/> 
    ... 
</Page.Resources>  
<Canvas> 
    <ContentControl Content="{StaticResource icon1}" Canvas.Top="0" Canvas.Left="0"/> 
    <ContentControl Content="{StaticResource icon2}" Canvas.Top="0" Canvas.Left="10"/> 
    <ContentControl Content="{StaticResource icon1}" Canvas.Top="0" Canvas.Left="20"/> 
    ...   
</Canvas> 

請參閱以下內容:

+0

我已經想到了這一點,但我認爲,必須有開銷更少更簡單的解決方案。它只有一個小小的多邊形。 – SpeziFish 2011-02-02 08:46:44

相關問題