XAML: ImageBrush 水平平铺

XAML: ImageBrush horizontal tiled

我在 Internet 上搜索以解决以下问题,但不幸的是我没有找到任何有效的解决方案。

我的目标是让 ImageBrush 在使用画笔的对象的底部有一个 x 重复的图像。额外的画笔应该有一个透明的边缘,所以重复的图像应该不会 "touch" 容器的边框。

目前我能够重复图像的 x 轴和 y 轴(我被卡住了......)。我使用以下 XAML:

<ImageBrush 
    x:Key="MandatoryIndicator" 
    ImageSource="image.png" 
    Stretch="None" 
    TileMode="Tile" 
    ViewportUnits="Absolute" 
    Viewport="0,0,16,16" 
    AlignmentY="Bottom"/>

看起来像这样:

我喜欢这样:

如果你知道我如何修改我的笔刷XAML,那就太好了c[~] =)

您可以使用带有两个嵌套元素的 VisualBrush,如下所示。透明边距需要外部边框(或其他一些外部元素)。

<VisualBrush Stretch="None" AlignmentX="Left" AlignmentY="Bottom">
    <VisualBrush.Visual>
        <Border Background="Transparent"
                Width="{Binding ActualWidth,
                        RelativeSource={RelativeSource AncestorType=FrameworkElement}}">
            <Rectangle Margin="10" Height="16">
                <Rectangle.Fill>
                    <ImageBrush ImageSource="image.png" TileMode="Tile"
                                Viewport="0,0,16,16" ViewportUnits="Absolute"/>
                </Rectangle.Fill>
            </Rectangle>
        </Border>
    </VisualBrush.Visual>
</VisualBrush>