es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los iconos del menú emergente de XP no son transparentes cuando se resaltan.

Sé que XP es antiguo, pero necesito saber cuál es el problema aquí.

No veo una forma de proporcionar un menú emergente con algo parecido a un icono o bitmap con una máscara, solo un bitmap. Entonces, si uso un bitmap compatible, se verá transparente cuando la barra de selección no lo resalte, pero cuando lo resalta, se muestra toda la imagen (con un color de fondo cuadrado alrededor).

Si uso un DIB de 32 bits con alfa, el elemento transparente solo se muestra en negro (mientras que Windows 10 maneja bien la transparencia, supongo que Vista y Win7 también lo harían).

Si establezco manualmente todas las A en 0 en el DIB, sigue siendo negro (en Win10, las imágenes donde normalmente habría color aparecen en blanco, hubiera pensado que serían transparentes).

En fin, ¿hubo alguna vez una forma de proporcionar un icono (ya que tiene una máscara), o un bitmap con máscara, a un menú para que XP pueda manejarlo automáticamente (sin dibujar manualmente)?

¿Existe alguna forma de forzar la carga de un archivo .ICO para que sea la versión de 256 colores en lugar de la versión RGB/A de 32 bits? No tengo una imagen RGB de 24 bits en el .ICO, ¿entonces tal vez XP elegiría eso si existiera?

Sé que GDI no admite alfa en todos los casos, pero a veces lo hace, y también parece que la versión de Windows importa.

¿Alguien tiene conocimientos sobre esto y puede decir si este es un problema conocido de XP con bitmaps de 32 bits?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en WinAPI y GDI, puedo brindar una idea sobre el problema que estás enfrentando con XP y los menús emergentes.

    En primer lugar, es cierto que XP es un sistema operativo antiguo y es posible que no admita todas las características y capacidades más recientes de versiones más nuevas de Windows como Windows 10. Esto incluye el soporte para iconos transparentes o mapas de bits con canales alfa.

    En cuanto a proporcionar un menú emergente con un icono o mapa de bits con una máscara, parece que no hay una manera directa de lograr esto sin utilizar dibujo propio (owner draw). Esto significa que tendrías que dibujar manualmente el icono o mapa de bits utilizando funciones de GDI en respuesta al mensaje WM_DRAWITEM.

    Con respecto al uso de un DIB de 32 bits con canal alfa, es posible que XP no maneje la transparencia de la misma manera que las versiones más nuevas de Windows. En algunos casos, puede aparecer como negro o con un color de fondo de botón cuadrado alrededor cuando se resalta.

    En cuanto a forzar la carga de un archivo .ICO para que sea la versión de 256 colores en lugar de la versión de 32 bits RGB/A, no hay una manera directa de hacer esto. Sin embargo, podrías intentar crear un nuevo archivo .ICO con solo gráficos RGB de 24 bits y ver si XP puede manejarlo mejor que la versión de 32 bits.

    En general, parece que el problema con los mapas de bits de 32 bits y la transparencia en XP es una limitación conocida de la biblioteca gráfica GDI y el sistema operativo XP. Si necesitas capacidades gráficas más avanzadas, es posible que desees considerar la actualización a una versión más nueva de Windows o utilizar bibliotecas alternativas como DirectX.

Comments are closed.