C# 使用图形移除颜色

C# Remove color using Graphics

我希望从 WMF 图像文件中仅删除一种颜色。

Metafile img = new Metafile(path + strFilename + ".wmf");
float planScale = 0.06615f;
float scale = 1200f / (float)img.Width;
planScale = planScale / scale; ;
float widht = img.Width * scale;
float height = img.Height * scale;
using (var target = new Bitmap((int)widht, (int)height))
{
    using (var g = Graphics.FromImage(target))
    {
        g.DrawImage(img, 0, 0, (int)widht, (int)height);
        target.Save("image.png", ImageFormat.Png);
    }
}

目前,我加载一个 WMF 文件,设置比例并将其保存为 PNG 文件。

PNG 结果示例:

但现在我需要删除所有颜色(绿色、紫色....)并只设置一种颜色,例如灰色。

如果背景总是白色,你可以做类似的事情。您可以将 200 更改为您想要的内容,以调整不应更改的颜色。在这个例子中,白色没有改变。如果不想画黑,可以在target.SetPixel(x,y,Color.Black);

处调整Color
Metafile img = new Metafile("D:\Chrysanthemum.wmf");
float planScale = 0.06615f;
float scale = 1200f / (float)img.Width;
planScale = planScale / scale; ;
float widht = img.Width * scale;
float height = img.Height * scale;
using (var target = new Bitmap((int)widht, (int)height))
{
    using (var g = Graphics.FromImage(target))
    {
        g.DrawImage(img, 0, 0, (int)widht, (int)height);
    }

    for (int x = 0; x < target.Width; x++)
    {
        for (int y = 0; y < target.Height; y++)
        {
            Color white = target.GetPixel(x, y);
            if ((int)white.R > 200 || (int)white.G > 200 || (int)white.B > 200)
            {
                target.SetPixel(x, y, Color.Black);
            }
        }
    }

target.Save("D:\image.png", ImageFormat.Png);
}

WMF 图片:

PNG 图片:

希望这就是您要搜索的内容。