我们正在使用 WPF 开发一个 erp 应用程序,目前仍处于初始阶段。
我需要知道如何在运行时使用特定子窗口实例的 C# 代码将 .png 或 .jpg 图标的颜色更改为灰度。
例如,窗口处理编辑操作应该禁用保存图像按钮并转为灰度。
非常感谢帮助,谢谢。
我们正在使用 WPF 开发一个 erp 应用程序,目前仍处于初始阶段。
我需要知道如何在运行时使用特定子窗口实例的 C# 代码将 .png 或 .jpg 图标的颜色更改为灰度。
例如,窗口处理编辑操作应该禁用保存图像按钮并转为灰度。
非常感谢帮助,谢谢。
我使用这种扩展方法将图像转换为灰度:
public static Image MakeGrayscale(this Image original)
{
Image newBitmap = new Bitmap(original.Width, original.Height);
Graphics g = Graphics.FromImage(newBitmap);
ColorMatrix colorMatrix = new ColorMatrix(
new float[][]
{
new float[] {0.299f, 0.299f, 0.299f, 0, 0},
new float[] {0.587f, 0.587f, 0.587f, 0, 0},
new float[] {.114f, .114f, .114f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
});
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(colorMatrix);
g.DrawImage(
original,
new Rectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height,
GraphicsUnit.Pixel, attributes);
g.Dispose();
return newBitmap;
}