Hemos conseguido hacer transparencias en C#, aunque no es nada facil como sería meter un gif/png con colores Alpha. Aquí hay que usar un croma y quitarlo en el rectandulo donde queramos pintarlo.
El código necesario es:
[code lang=»csharp»]
Image img = recursos.imagen;
ImageAttributes attr = new ImageAttributes();
Color color = Color.FromArgb(0, 0, 0);
attr.SetColorKey(color, color);
g.DrawImage(img, rectDestino, posX, posY, img.width, img.height, Graphics.Pixel,color);
[/code]
Expliquemos esto un poco con unos pasos básicos:
- El procedimiento se basa en un croma sobre la imagen (parecido al fondo verde del hombre del tiempo)
- img: imagen del tipo Image que queremos pintar
- attr: los atributos que daremos a la imagen
- color: el color usado en el croma de la imagen
- attr.SetColorKey: método que indica cual es el color del croma. Se pasan dos atributos de tipo Color que indican el color de bajo y el color de alto (para rangos de colores que usaremos en la transparencia). En CF tienen que ser el mismo, puesto que no acepta rango de color para la transparencia.
- rectDestino: Es necesario tener un rectangulo de destino para pintar la imagen, pues es de donde se aplicará la imagen sin el croma
A continuación se muestra una imagen de prueba de que funciona:
Aquí hemos usado el croma 0,0,0 (Color.black), aunque no es el más recomendabl, y se comprueba la transparencia (aunque también las rebabillas, que hay que pulir con chotopop)
Ahora se están haciendo pruebas con animaciones de imagenes… a ver como acaba la cosa…
Comentarios recientes