C# Удалить цвет с помощью графики
Я ищу, чтобы удалить все цвета из WMF
файл изображения только 1 цвет.
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
файл.
Но теперь мне нужно удалить все цвета (зеленый, фиолетовый....) и установить только 1 цвет, например, серый.
1 ответ
Решение
Если фон всегда белый, вы можете сделать что-то подобное. Вы можете изменить 200
на то, что вы хотите, чтобы настроить цвет, который не должен быть изменен. В этом примере белый цвет не изменяется. Если вы не хотите рисовать черным, вы можете настроить цвет на target.SetPixel(x,y,Color.Black);
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);
}
Я надеюсь, что это то, что вы ищете.