Сделать прозрачным каждый пиксель изображения, имеющего определенный цвет

У меня есть объект типа System.Рисунок.Изображение и хотите сделать каждый пиксель, который имеет определенный цвет, например черный, прозрачным (то есть установите alpha в 0 для этого пикселя).

каков наилучший способ сделать это?

3 ответов


один хороший подход-использовать ImageAttributes класс для настройки списка цветов для переназначения при рисовании. Преимуществом этого является хорошая производительность, а также позволяет легко изменять цвета переназначения. Попробуйте что-то вроде этого кода...

ImageAttributes attribs = new ImageAttributes();
List<ColorMap> colorMaps = new List<ColorMap>();
//
// Remap black top be transparent
ColorMap remap = new ColorMap();
remap.OldColor = Color.Black;
remap.NewColor = Color.Transparent;
colorMaps.Add(remap);
//
// ...add additional remapping entries here...
//
attribs.SetRemapTable(colorMaps.ToArray(), ColorAdjustType.Bitmap);
context.Graphics.DrawImage(image, imageRect, 0, 0, 
                           imageRect.Width, imageRect.Height, 
                           GraphicsUnit.Pixel, attribs);

создайте растровое изображение из изображения, а затем вызовите MakeTransparent() на этом растровом изображении. Он позволяет указать цвет, который должен отображаться как прозрачный.


вы только знаете, что это изображение? Если это растровое изображение, вы можете вызвать LockBits, проверить/исправить каждый пиксель, а затем снова разблокировать биты.