Skip to content


Transparencias en C# Compact Framework

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:

  1. El procedimiento se basa en un croma sobre la imagen (parecido al fondo verde del hombre del tiempo)
  2. img: imagen del tipo Image que queremos pintar
  3. attr: los atributos que daremos a la imagen
  4. color: el color usado en el croma de la imagen
  5. 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.
  6. 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:

Transparencia c# CF

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…

Posted in C#, Compact Framework.

Tagged with , , .