2

我在 TImage 中有一个 PNG(32 位)图像。表单有一个玻璃框架。图片的背景是黑色的,不透明。如何解决?

德尔福 2010。

谢谢。

4

2 回答 2

7

作为解决方法,您可以将 png 图像的位数更改为 32。

检查这个样本

左边的图像是 8 位的 PNG,另一个是 32 位的。

在此处输入图像描述

于 2011-07-21T06:26:28.217 回答
0

您应该忘记 TImage,因为它不会正确处理 blit。您需要使用 GDI+ 在表单上手动绘制图像。那只是因为“玻璃”。如果您将其保留在 TImage (或实际上显示在其中的 TGraphic !),“背景”(玻璃)将被复制到内存中,然后将组成一个透明的图形(png?),并被传送回来他形成。不幸的是,“背景”(玻璃)在你把它弄回来时会变成黑色。

因此,使用 GDI+(google it)和使用 bitmap.handle 的 blt。确保位图是透明的(即 32 位和适当的属性集)。

顺便说一句,与玻璃上的字体相同。您必须自己绘制东西(也许来自自定义组件?)。不过,您可以找到一些已经执行此操作的组件……例如http://development.mwcs.de/glowlabel.html

于 2011-07-21T05:21:49.327 回答