加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

WPF窗口背景ImageBrush不平铺

发布时间:2020-12-13 20:57:57 所属栏目:Windows 来源:网络整理
导读:我有一个带有背景图像的窗口。图像可能会在运行时发生变化,这对于此而言并不重要。 我想要将图像固定在左上角(它是),而不是缩放(这也是正确的,但是当窗口大于图像时,我需要图像重复(瓦片),我在做… 。 我失踪了什么 TIA 您需要设置 TileMode 属性以及Vi
我有一个带有背景图像的窗口。图像可能会在运行时发生变化,这对于此而言并不重要。

我想要将图像固定在左上角(它是),而不是缩放(这也是正确的,但是当窗口大于图像时,我需要图像重复(瓦片),我在做… 。


我失踪了什么

TIA

您需要设置 TileMode属性以及Viewport和ViewportUnits:

例如:

<Window.Background>
    <ImageBrush ImageSource="myImage.png"
        Viewport="0,300,300"
        ViewportUnits="Absolute"
        TileMode="Tile"
        Stretch="None"
        AlignmentX="Left"
        AlignmentY="Top"  />
</Window.Background>

注意:Viewport属性的第二个2段表示每个重复的所需大小。如果要显示整个图像,这些应该是图像的宽度和高度。

示例输出:

编辑响应评论

如果您不知道要在“视口”属性中指定的图像的大小,则可以使用带有IValueConverter的绑定从图像中计算。我确信必须有一个更好的办法,但我还没有找到一个!

XAML:

<Window.Resources>
    <local:Converter x:Key="Converter" />
</Window.Resources>
<Window.Background>

    <ImageBrush ImageSource="myImage.png"
    ViewportUnits="Absolute"
    TileMode="Tile"
    Stretch="None"
    AlignmentX="Left"
    AlignmentY="Top" 
    Viewport="{Binding ImageSource,RelativeSource={RelativeSource Self},Converter={StaticResource Converter}}"/>
</Window.Background>

价值转换器

public class Converter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture)
    {
        var source = (ImageSource)value;
        return new Rect(0,source.Width,source.Height);
    }

    public object ConvertBack(object value,System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读