visual 如何在XAML/WPF中存儲和檢索多個形狀?




wpf applications (2)

您應該使用Drawing並使用DrawingBrush(如KP Adrian建議的或DrawingImage和Image控件)來顯示它,但是如果不能使用繪圖,則可以在VisualBrush中使用Canvas。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
    <VisualBrush x:Key="Icon">
        <VisualBrush.Visual>
            <Canvas Width="10" Height="10">
                <Ellipse Width="5" Height="5" Fill="Red"/>
                <Ellipse Width="5" Height="5" Fill="Blue" Canvas.Left="5" Canvas.Top="5"/>
            </Canvas>
        </VisualBrush.Visual>
    </VisualBrush>
</Page.Resources>
    <Rectangle Width="100" Height="100" Fill="{StaticResource Icon}"/>
</Page>

似乎有很多的問題,使用XAML / WPF做簡單的事情 - 我已經創建了一些使用矩形和橢圓形狀的基於XAML的圖像來創建圖標,我需要使用我的應用程序的其他部分 - 但是我不能似乎找到瞭如何做到這一點 - 我似乎能夠在資源字典中存儲畫布,但沒有辦法在任何其他窗口中使用它。 這是如何完成的 - 這些都是簡單的圖像,我想在整個項目中使用兩三個形狀!
圖像也必須可調整大小 - 我知道如何存儲路徑,但是這些形狀包含漸變樣式我想要保存加上我不知道如何矩形可以轉換為路徑和顏色數據。

謝謝!


Answer #1

您不希望使用Canvas將這些資源存儲在資源字典中。 幾何圖形的根可能類似於DrawingBrush(特別是如果您使用Expression Design來創建圖像),那些是需要添加到資源字典中的項目,如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DrawingBrush x:Key="YourResourceKey">
<DrawingBrush.Drawing>
<DrawingGroup>
<!-- This can change a lot, but a typical XAML file exported from a Design image would have the geometry of the image here as a bunch of Paths or GeometryDrawings -->
</DrawingGroup>
</DrawingBrush.Drawing>
</ResourceDictionary>

我假設你知道如何獲得你的應用程序中引用的這個資源字典。

要使用資源,只需將它們分配給相應的屬性。 對於形狀類型的圖像,您可以將它們分配給像Rectangle的Fill屬性(還有很多其他方法,但這是一個簡單的方法)。 這裡有一個例子:

<Button>
   <Grid>
      <Rectangle Fill="{StaticResource YourResourceKey}" />
   </Grid>
</Button>






shape