我在 TImage 中有一个 PNG(32 位)图像。表单有一个玻璃框架。图片的背景是黑色的,不透明。如何解决?
德尔福 2010。
谢谢。
我在 TImage 中有一个 PNG(32 位)图像。表单有一个玻璃框架。图片的背景是黑色的,不透明。如何解决?
德尔福 2010。
谢谢。
作为解决方法,您可以将 png 图像的位数更改为 32。
检查这个样本
左边的图像是 8 位的 PNG,另一个是 32 位的。
您应该忘记 TImage,因为它不会正确处理 blit。您需要使用 GDI+ 在表单上手动绘制图像。那只是因为“玻璃”。如果您将其保留在 TImage (或实际上显示在其中的 TGraphic !),“背景”(玻璃)将被复制到内存中,然后将组成一个透明的图形(png?),并被传送回来他形成。不幸的是,“背景”(玻璃)在你把它弄回来时会变成黑色。
因此,使用 GDI+(google it)和使用 bitmap.handle 的 blt。确保位图是透明的(即 32 位和适当的属性集)。
顺便说一句,与玻璃上的字体相同。您必须自己绘制东西(也许来自自定义组件?)。不过,您可以找到一些已经执行此操作的组件……例如http://development.mwcs.de/glowlabel.html。