我想要更改图像的某些像素。图像构建操作设置为“资源”。我不可能得到一个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
答案 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;