Un control de botón y reemplazo subyacente para TBitmap que maneja correctamente la transparencia PNG sin escribir el código de premezcla

os TSpeedButtons de @Delphi 2010 no parecían admitir realmente la transparencia PNG correctamente, porque la propiedad Glyph usa un mapa TBit internamente, y TBitmap es para mapas de bits, y no admite la transparencia PNG correctamente, y TSpeedButton.Glyph no puede admitir transparencia entonces. @update: Pero el problema real era que tenía algunas cosas externas (componentes de Developer Express) que hacían que el soporte PNG de Delphi no funcionara, TImage por otro lado, mientras que todavía TPicture, y puede soportar PNG, también se vio afectado por esto Desarrollador express bug.

Ya se hizo una pregunta sobreaqu, y la respuesta muestra cómo usar la premezcla para que la transparencia no se convierta en píxeles negros. Quiero saber si hay otro control de botón que usará PNG con mezcla alfa cargada en el momento designado, y que no convierte los recursos PNG en formato BMP descartando el canal alfa y causando el borde negro que se muestra aquí.

n resumen, este control no usaría TBitmap, y no usaría la característica de transparencia de la clave de color que es todo lo que TBitmap tiene.

Para repetir, no estoy preguntando cómo resolver el problema de negro alrededor del exterior mientras sigo usando la funcionalidad VCL basada en TBitmap / TSpeedButton desactualizada, porque carece de la funcionalidad moderna de transparencia PNG, estoy preguntando sobre reemplazarla con algo más que "simplemente funciona".

Como un inconveniente secundario, la conversión de un pequeño archivo .png en un recurso de mapa de bits .DFM está esencialmente desperdiciando espacio y haciendo que mi formulario .DFM sea demasiado grande. El almacenamiento de formato de archivo .png nativo dentro del .dfm debería hacer que los formularios resultantes sean más pequeños.

Actualizararece que @ PngComponents deberían funcionar, pero obtuve unInvalid Graphic format error cuando intento cargar un png en el botón de velocidad Png. Tenga en cuenta que el componente de lista de imágenes Png no tiene tales problemas. Parece que cxLibrary (un paquete express para desarrolladores) está rompiendo cosas. Una vez que eliminé todo el material express del desarrollador, este problema desaparece. Entonces, aunque he seleccionado Pngcomponents como la respuesta, si tiene instalado material devex, use sus botones y no pngcomponents.

Respuestas a la pregunta(3)

Su respuesta a la pregunta