我可以将ViewBox用作WPF中图像的源吗?

时间:2019-06-08 14:02:00

标签: wpf viewbox

我有一个在XAML中定义的图标,其根元素为Viewbox。我想将其设置为Source元素的Image

我试图将其直接设置为图像源,例如...

<Button Margin='5'>
   <Image Source='{StaticResource IconKey}'></Image>
</Button>

但是我有一个例外。有办法吗?

2 个答案:

答案 0 :(得分:1)

这是一个很大的主题,对于初学者来说是个棘手的问题,因为需要太多“东西”才能使您动脑筋。

我将尝试涵盖该主题的一些内容。希望这可以减轻您的困惑。

路径使用的数据看起来与所有这些奇怪的坐标东西都有些奇怪。这可以直接在路径中,也可以在几何体(或流几何体)中进行。如果您使用的是几何图形,那么该几何图形可用于红色(无论蓝色)等等。它也不是视觉对象,因此您不会因为只能拥有一个父对象而被视觉对象吸引住-即在任何用户界面。

我通常要做的事情是获得一个单一的几何体。 经常不在syncfusion Metro Studio(这是一个免费库)中,但有时我使用inkscape(免费)来跟踪位图,或者从svg中获取路径。

不过,您可以组合两个几何。

在由app.xaml合并的资源字典中,您可以具有几何图形:

        <CombinedGeometry x:Key="TwoGeometriesInOne">
            <CombinedGeometry.Geometry1>
                <Geometry>
                   M3,1.6675c0,-0.1795..... and the rest of your first geometry data
                </Geometry>
            </CombinedGeometry.Geometry1>
            <CombinedGeometry.Geometry2>
               <Geometry>
                   M15.9289,7.776L5.285,....
                </Geometry>
            </CombinedGeometry.Geometry2>
        </CombinedGeometry>

巨大的长字符串弄乱了站点,但是这两个几何应该只具有M ...到用于每个路径的数据的z。

在按钮(或任何其他内容控件)中使用它

    <Button Height="40" Width="40">
        <Path Fill="#3E79B4" Data="{StaticResource TwoGeometriesInOne}"
              Height="16"
              Width="16"
              Stretch="Fill"/>
    </Button>

请注意,路径只能单独使用,而不是在画布中使用,也可以调整大小,也可以将其拉伸以适合其大小或父级允许的大小。

还请考虑:

    <Button Height="40" Width="40">
        <Path Fill="#3E79B4" Data="{StaticResource TwoGeometriesInOne}"
              Stretch="UniformToFill"
              Margin="5"
              />
    </Button>

使用路径可以填充和描边。描边是轮廓。如果要在一个“图标”中使用不同颜色的形状,则具有多个几何图形的图形更适合,因为每个几何图形都可以拥有自己的画笔。

答案 1 :(得分:0)

我找到了另一种选择。我没有使用按钮内的Image,而是使用Button的{​​{1}}属性。

Content