从项目资源加载位图

时间:2017-09-26 08:04:10

标签: c# wpf bitmap

我想要更改图像的某些像素。图像构建操作设置为“资源”。我不可能得到一个Bitmap对象,所以我可以使用下面的for循环进行更改。

        Bitmap bmp = new Bitmap("pack://application:,,,/ovl_kommen.png");


        //Change Black pixels to color
        for (int x = 0; x < bmp.Width; x++)
        {
            for (int y = 0; y < bmp.Height; y++)
            {
                if (bmp.GetPixel(x,y) == System.Drawing.Color.Black)
                {
                    bmp.SetPixel(x, y, System.Drawing.Color.Blue);
                }
            }
        }

我的下一个问题是,向用户查看修改后的位图。我有一个WPF图像控件 img_kommen ,我想将位图设置为源。  img_kommen.Source = bmp

1 个答案:

答案 0 :(得分:1)

不要操纵像素值,最好只使用填充的Rectangle并将图标图像应用为OpacityMask,因为

  

此属性仅使用提供的Brush的alpha通道值。刷子渲染内容(红色,绿色或蓝色)的其他通道将被忽略

示例:

<Rectangle x:Name="icon" Fill="Black" Width="100" Height="100">
    <Rectangle.OpacityMask>
        <ImageBrush ImageSource="ovl_kommen.png" Stretch="Uniform"/>
    </Rectangle.OpacityMask>
</Rectangle>

然后在代码后面设置图标颜色,如:

icon.Fill = Brushes.Red;