使用 C# 代码在运行时将图像按钮图标颜色更改为灰度

本文关键字:颜色 图标 灰度 按钮 图像 代码 运行时 使用 | 更新日期: 2023-09-27 18:30:46

我们正在开发一个使用WPF的ERP应用程序,该应用程序目前仍处于初始阶段。

我需要知道如何在运行时使用特定子窗口实例的 C# 代码将.png或.jpg图标的颜色更改为灰度。

例如,窗口处理编辑操作应禁用"保存图像"按钮并将其转换为灰度。

非常感谢帮助,谢谢。

使用 C# 代码在运行时将图像按钮图标颜色更改为灰度

我使用此扩展方法将图像转换为灰度:

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;
}