Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Iconos en Menús, vaya piiiiii (https://www.clubdelphi.com/foros/showthread.php?t=29682)

[Gunman] 29-01-2006 16:34:36

Iconos en Menús, vaya piiiiii
 
Hola!
Como todos sabréis (y si no os lo recuerdo), si exportas un icono de Windows XP de una dll o un exe (por ejemplo shell32.dll) y lo colocas en el menú, el icono sale envuelto de una franja de color fucsia (o del color con que lo hayas exportado). No habria alguna forma de que los iconos quedasen tan chulos en nuestro programa como los iconos que lleva el WinXP?
Espero que me entendáis alguien lo ha conseguido? Yo de momento lo que hago es editarlos con el paint shop pro (parecido al photoshó) hasta que queden más o menos bien.
Gracias!

Lepe 30-01-2006 00:55:54

Desde que uso ArtIcons he olvidado los colores que usan los programas para el color transparente, jejejej.

Si lo vas a añadir a un ImageList, coloca la propiedad del ImageList.Transparent := true, ello quitará el color fuchsia sin tener que editar el icono.


saludos

[Gunman] 30-01-2006 15:50:20

No encuentro la propiedad ImageList.Transparent (en el BDS2006) pero si que he visto la propiedad ImageList.DrawingStyle y la he puesto en dsTransparent pero esta propiedad no me ha solucionado nada, porque los iconos de windows XP llevan una degradación del color en los bordes para que el efecto sea más suave, entonces por ejemplo la propiedad Transparent "elimina" el color fucsia (#ff00ff) pero el color de los bordes, que es cercano al negro no los degrada para hacer un gris, ya que el código del color no es el mismo, y por lo tanto se ve el borde rosado.

Jonnathan 31-01-2006 14:33:02

Hola Gunman, una vez trate de hacer algo parecido y me encontré con una pared ya que eso es un problema que llega hasta las librerias de Windows. Me explico: para las imágenes de los menús, la VCL usa algunas funciones de Windows que "pintan" estos íconos en formato BMP y creo que lo hace sin el "flag" o bit de nivel de transparencia. Lo que puedes hacer es guardar tus imágenes con el mismo color del fondo del menú, pero tambien está el problema que no todos los Windows y computadores tienen el mismo color de fondo para el menú, asi que tal vez tengas que usar un Componente TActionMenuBar combinado con TStandardColorMap para que el menú siempre lo pinte del mismo color. Otra opción es que uses un componente "Menú" personalizado que si tenga esas características.

La última opción es algo que implemente en un sistema que hice hace poco y es un poco laboriosa:o : Conviertes tus imágenes a PNG, bajas algun componente/librería PNG para delphi y pintas tu mismo la imagen en los menús en el evento OnDrawItem. ¿Por qué en formato PNG y no directamente como *.ICO? Porque es una desagradable sorpresa cuando tengas que correr tu sistema en Windows2000/9x y veas los iconos con esos manchones negros (Porque solo Windows XP admite transparencias):p . En formato PNG no tienes ese problema.

[Gunman] 31-01-2006 15:52:34

Mmm... interesante solución, de momento ya he solucionado mi problema como lo he hecho hasta ahora (con el photoshó) ya probaré en alguna otra ocasión.
Gracias ;-)

lpaburto 02-02-2006 18:34:28

Gunman

Te explico, el nuevo formato de iconos que trae windows XP añade un nuevo canal a la imagen (por defecto las imagenes tienen Rojo, verde y azul, para formar cualquier color), este canal es utilizado para generar el nivel de transparencia de los otros 3, es decir, 255 el punto es totalmente visible, 0 es totalmente invisible, por lo tanto tienes una gama de 255 niveles de transparencia.

Delphi solo soporta los iconos con los tres canales basicos (no soporta el canal ALPHA) por lo tanto solo puedes elejir 1 color para que no sea dibujado (transparente).

Existen un par de librerias que te permiten trabajar con estas transparencias, pero todas son de pago.

Una de las pocas soluciones (si no quieres implementar una rutina de dibujo con canal ALPHA en los menus) es fijar el color de los menus y en Photoshop convertir los iconos en imagenes con el color de fondo que elejiste para los menus.


La franja horaria es GMT +2. Ahora son las 15:29:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi