正如这篇回答所描述的那样,您可以使用Rectangle
进行着色。将矩形的OpacityMask
源设置为与图像本身相同,就可以确保透明的部分保持透明。
<Image
Source="{Binding MyImage}"
Width="150"
Height="150" />
<Rectangle Width="150" Height="150">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Color}"/>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<ImageBrush ImageSource="{Binding MyImage}"/>
</Rectangle.OpacityMask>
</Rectangle>
一个简单的覆盖层无法满足您的需求。
我之前问过一个类似的问题。共识是您可以使用像素着色器来实现这一点。我的问题的答案提供了几个选项。
OpacityMask
(透明度蒙版),透明区域仍然会是透明的。这就是透明度蒙版的作用。 - Abion47