我试图给System.Windows.Controls.Image
着色。图像包含透明区域,我只是想用一种颜色着色非透明区域。
例如,图像为黑色/灰色,将其着色为红色会产生红色渐变,透明区域不受影响。
是否可以在XAML或后面的代码(理想情况下)中为WPF中的图像着色?
谢谢
<Image Name="OverlayImage" Canvas.ZIndex="2" />
示例图片:
答案 0 :(得分:5)
如this answer中所述,您可以使用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>
答案 1 :(得分:1)
简单的叠加层无法达到你想要的效果。
我前一段时间问similar question。大家一致认为,您可以使用像素着色器实现此目的。我的问题的答案提供了一些选择。