剪辑png格式的幻灯片(Delphi 2010)

时间:2011-06-17 19:52:37

标签: delphi png transparency timagelist

我有一个png格式的图片幻灯片,如下所示: filmstrip

我想知道如何剪切每个图像并将这些图像放在TImageList控件中,始终保持透明度。

[编辑]

是的,在设计时,RRUZ提到的技巧很好,但我想在运行时剪辑图像,即从资源或文件中加载幻灯片

3 个答案:

答案 0 :(得分:4)

您必须按照以下步骤操作:

  • ColorDepth属性设置为cd32Bit

  • DrawingStyledsTransparent

  • Height = 48,

  • Width = 48,

然后加载图像,结果将是

enter image description here

答案 1 :(得分:1)

只需导入图片列表即可。它会抱怨它太大而且可以为你分解成碎片。在D2005上可以正常使用。

另一个很酷的提示:我使用AWIcons Pro http://www.awicons.com/icon-editor/来编辑图标(很棒的编辑器!)。它有一个功能,可以将图标导出为图像列表(.bmp或.png格式),从而使幻灯片脱离图标。这使得以.ico格式编辑这些内容非常方便,其中一系列单元格具有相同的大小和深度,每个单元格略有不同。然后导出为图像列表(我使用.png),然后Delphi可以将它们分解为单个单元格。非常光滑。 AWIcons不是免费的,但是这样的功能确实让它变得富有成效。

答案 2 :(得分:1)

在运行时,您必须调用TImageList.FileLoad。除非它不起作用。

这反过来调用ImageList_LoadImage,其中uFlags参数值包括位LR_LOADFROMFILE,这会导致Windows从磁盘上的文件加载。此基础功能仅支持TBitmap(BMP)格式。

请参阅nearly-duplicate question。 PNG支持是一种设计时功能,它将PNG数据转换为内部非PNG和非精确BMP格式,由MS公共控制库内部使用。将DFM视为文本,您将看到已将PNG输入转换为什么。其他答案显示使用基于位图颜色的透明度保留透明度。

如果你想保持PNG格式的数据,你不应该使用VCL TImageList来存储它,因为你将不得不从PNG转换到TBitmap以实际使用TImageList。