【问题标题】:Set Size of Rectangle to image size将矩形的大小设置为图像大小
【发布时间】:2018-02-13 15:54:51
【问题描述】:

我用这个来显示可以改变颜色的图标

<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 命名并引用矩形的大小,这不起作用。

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

【问题讨论】:

  • 如果我理解正确,那么您的目的是仅在矩形中显示图像,我正确吗?
  • @GaurangDave 是的,我想是的
  • 在下面查看我的答案

标签: wpf size opacitymask


【解决方案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>

【讨论】:

  • 啊,我不知道你可以绑定到静态图像的属性,很好。唯一的事情是,这会将图像设置为其原始大小。我用视图框包围它,然后将其缩放到更好的尺寸。谢谢
  • 是否可以将源设置为从转换器收集的图像?像 Width="{Binding Width, Source={Binding Status, Converter={StaticResource StatusToImageConverter}}}"
  • 我也没有看到这不起作用的原因。但是我试过了,图像消失了,就像我根本没有设置宽度或高度一样
  • 抱歉,我没有仔细阅读您评论中的 XAML。绑定中的绑定不起作用。根据 ConverterParameter 属性的值,您可能拥有返回不同属性的 Binding Converter,例如 BitmapSource 的 Width 或 Height。
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2014-06-05
相关资源
最近更新 更多