不透明度遮罩 wpf 中的图像

Opacity mask an image in wpf

我尝试通过此 xaml:

在 wpf 中为图像制作不透明蒙版
<Border x:Name="border1" Margin="20" BorderThickness="2" BorderBrush="Red" CornerRadius="50" >
    <Grid>
        <Border Background="Wheat" x:Name="border2" CornerRadius="50"/>
        <Image Margin="0" Source="Images/SpiderMan.png" Stretch="Fill">
            <Image.OpacityMask>
                <VisualBrush Visual="{Binding ElementName=border2}"/>
            </Image.OpacityMask>
        </Image>
    </Grid>
</Border>

这个 xaml 可以正常工作并且很好,但是当我将 Elementname 更改为 border1 时不起作用?为什么会这样?

已编辑(另一个问题):

在上面 xaml 中,直到我设置 Background 属性 后图像才会显示 border2 但这是怎么回事?为什么没有背景 属性 图片不显示?

Border1 不能分配给 VisualBrush,因为它是父控件。如果允许这样的绑定......你将面临巨大的递归和计算器异常。接下来XAML 工作

<Grid>
     <Border x:Name="border1" Margin="20" BorderThickness="2" BorderBrush="Red" CornerRadius="50" />
    <Grid>
        <Border Background="Wheat" x:Name="border2" CornerRadius="50"/>
        <Image Margin="0" Source="Images/SpiderMan.png" Stretch="Fill">
            <Image.OpacityMask>
                <VisualBrush Visual="{Binding ElementName=border1}"/>
            </Image.OpacityMask>
        </Image>
    </Grid>
</Grid>