Los TSpeedButtons de Delphi 2010 no parecían realmente admitir la transparencia PNG correctamente, porque la propiedad Glyph usa un TBitmap internamente, y TBitmap es para mapas de bits, y no admite la transparencia PNG correctamente, y TSpeedButton.Glyph no puede admitir la transparencia, entonces ... actualización: Pero el problema real era que tenía algunas cosas externas (componentes de Developer Express) que estaban haciendo que el soporte PNG de Delphi no funcionara, Por otro lado, TImage, aunque todavía tiene TPicture, y puede admitir PNG, también se vio afectado por este error de Developer express.Un control de botón y reemplazo subyacente para TBitmap que maneja correctamente la transparencia PNG sin escribir el código de premezcla
Ya se formuló una pregunta acerca de here, 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 botón de control que usará PNG combinados alfa cargados en designtime, y que no convierte los recursos PNG en formato BMP descartando el canal alfa y causando el borde negro que se muestra aquí.
En resumen, este control no usaría TBitmap, y no usaría la función de transparencia de la clave de color que es todo lo que TBitmap tiene.
Para repetir, no estoy preguntando cómo resolver el problema del negro alrededor del exterior mientras sigo utilizando la funcionalidad de VCL obsoleta TBitmap/TSpeedButton, porque carece de la funcionalidad de transparencia PNG moderna, estoy preguntando sobre reemplazarlo con algo más que "simplemente funciona".
Como una desventaja secundaria, la conversión de un pequeño archivo .png en un recurso de mapa de bits .DFM es esencialmente perder espacio y hacer que mi forma .DFM contenido sea demasiado grande. El almacenamiento nativo de formato de archivo .png dentro de .dfm debería hacer que los formularios resultantes sean más pequeños.
Actualizar: PngComponents parecen que deben trabajar, pero me dio un error Invalid Graphic format
cuando intento cargar un archivo PNG en el speedbutton PNG. Tenga en cuenta que el componente de la lista de imágenes Png no tiene tales problemas. Parece que cxLibrary (un paquete de desarrollador expreso) está rompiendo cosas. Una vez que eliminé todo el desarrollador de material expreso, este problema desaparece. Entonces, aunque he seleccionado Pngcomponents como respuesta, si tiene instalado devex, use sus botones y no los pngcomponents.
Si no desea poner imágenes en el dfm, entonces no las cargue como recursos. Este es el único enfoque sensato en mi opinión. Si coloca sus activos en los archivos dfm, entonces perderá la capacidad de mantener los activos en control de revisión. –
¿Por qué no pones tus PNG en archivos .ico y los cargas en una lista de imágenes en tiempo de ejecución? –
P.S. Espero que el nuevo trabajo esté funcionando para ti. –