[C#] Como guardar un BITMAP como un ICONO

Iniciado por DarK_FirefoX, 21 Noviembre 2012, 17:39 PM

0 Miembros y 1 Visitante están viendo este tema.

DarK_FirefoX

Hola, salu2s, stoy haciendo una aplicacion para crear y editar iconos, y tengo una duda. Como puedo cojer un Bitmap (el de .NET) y exportarlo a un archivo .ICO.?

Por ahora tengo dos variantes pero ninguna de las dos me sirve, veran por que

1ra variante:
El bitmap se llama "file" y ya tiene todos los pixeles coloreados con la informacion de mi icono... lo guardo asi

file.Save("C:\\icono.ico", System.Drawing.Imaging.ImageFormat.Icon);

pero esto me lo guarda y se ve bien el icono de ese archivo,pero no lo puedo poner como icono de una carpeta, veran porque. Porque un icono contiene varios formatos de distintos tamanos. En este caso yo solo quiero ponerle un solo tamano pero que lo reconozca, en este caso 16x16 y que soporte un formato 32bits ARGB (con ALPHA).

2da variante: (el bitmap es "file")

FileStream f = new FileStream("C:\\icono.ico", FileMode.Create);
IntPtr hIcon = file.GetHicon();
System.Drawing.Icon iconizer = System.Drawing.Icon.FromHandle(hIcon);
iconizer.Save(f);

En esta variante, si le anade el formato correspondiente al tamano del icono (16x16), pero con 4bits por pixel (vaya, que sin color). no se ve transparencia, de hecho se ve todo negro.

O sea como puedo hacer esto bien...repito la pregunta...

Como puedo desde un BITMAP guardar un .ICO para que tenga un formato especifico (uno solo Ej: 16x16 o 32x32) pero que tenga 32Bits por pixel y ARGB (ALPHA)???

Espero me puedan ayudar...gracias

PD: Disculpenme por las tildes y las ennes, ah....y por el codigo que no me funciona el GeSHi

Keyen Night

#1
El siguiente parámetro del constructor del Bitmap: Imaging.PixelFormat, para la sobrecarga  de 3 parámetros Int32, permite elegir la estructura del color, Tienes para elegir entre 4, 16, 24 32 y 64 bpp y entre ARGB y RGB.

El método de guardado que utilice para probar fue, obtener el Handle Icon del Bitmap y guardar el Icon en un FileStream y funciono perfectamente.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

DarK_FirefoX

Mira, ya yo probe con el PixelFormat y el Handle y no me funciono tampoco. Si pudieras escribirme el codigo de como lo hicistes con el FileStream para ver si es que hice algo mal.

PD: Con eso que hicistes te lo abre con algun programa para icono??
Te lo deja poner como un icono? (y lo guardaste como ImageFormat.Icon y te lo guardo con transparencia)