将“矩形的大小”设置为图像大小

时间:2018-02-13 07:21:33

标签: wpf size opacitymask

我使用它来显示可以改变颜色的图标

<Rectangle Width="100"
           Height="100"
           Fill="{DynamicResource WhiteBrush">
   <Rectangle.OpacityMask>
      <ImageBrush Stretch="Uniform" ImageSource={x:Static ImageResources.MyImage}"/>
   </Rectangle.OpacityMask>
</Rectangle>

问题是,并非每个图像在100x100中看起来都很好,如果我没有填充这些值,则不会显示任何内容。我想要实现的是,矩形自动获取图像所需的大小,就像我使用

一样
<Image Source="{x:Static ImageResources.MyImage}"/>

任何想法如何实现这一目标?我已经尝试给ImageBrush一个名称并引用矩形的大小,这不起作用。

作为一种解决方法,我将Image放在Visibility = Hidden的相同位置,并从那里获取Rectangle的actualHeight和actualWidth,但这不是一个可接受的解决方案。任何提示欢迎。

1 个答案:

答案 0 :(得分:1)

你可以绑定矩形的宽度和高度:

<Rectangle Fill="{DynamicResource WhiteBrush"
           Width="{Binding Width, Source={x:Static ImageResources.MyImage}}"
           Height="{Binding Height, Source={x:Static ImageResources.MyImage}}">
    <Rectangle.OpacityMask>
        <ImageBrush ImageSource="{x:Static ImageResources.MyImage}"/>
    </Rectangle.OpacityMask>
</Rectangle>