着色图像

时间:2017-03-14 18:30:43

标签: c# wpf image

我试图给System.Windows.Controls.Image着色。图像包含透明区域,我只是想用一种颜色着色非透明区域。

例如,图像为黑色/灰色,将其着色为红色会产生红色渐变,透明区域不受影响。

是否可以在XAML或后面的代码(理想情况下)中为WPF中的图像着色?

谢谢

<Image Name="OverlayImage" Canvas.ZIndex="2" />

示例图片:

enter image description here

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。大家一致认为,您可以使用像素着色器实现此目的。我的问题的答案提供了一些选择。

相关问题