我尝试通过此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 ,但是这会发生吗?为什么没有背景属性图片就不显示?
答案 0 :(得分:-1)
Border1无法分配给VisualBrush,因为它是父控件。如果将允许这种绑定..您将面临巨大的递归和stackoverflow异常。下一个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>