c# - poner - Hacer que cada píxel de una imagen tenga un color específico transparente
c# picturebox png transparent (3)
¿Sabes que es una imagen? Si se trata de un mapa de bits, puede llamar a LockBits, verificar / corregir cada píxel y luego desbloquear los bits nuevamente.
Tengo un objeto del tipo System.Drawing.Image y quiero hacer que cada píxel que tiene un color específico, por ejemplo negro, transparente (es decir, establecer alfa en 0 para este píxel).
¿Cuál es la mejor manera de hacer esto?
Construya un mapa de bits a partir de la imagen y luego llame a MakeTransparent () en ese mapa de bits. Le permite especificar un color que debe mostrarse como transparente.
Un buen enfoque es usar la clase ImageAttributes para configurar una lista de colores para reasignar cuando se lleva a cabo el dibujo. La ventaja de esto es un buen rendimiento y le permite modificar los colores de reasignación muy fácilmente. Pruebe algo como este código ...
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);