我有一个png格式的图片幻灯片,如下所示:
我想知道如何剪切每个图像并将这些图像放在TImageList控件中,始终保持透明度。
[编辑]
是的,在设计时,RRUZ提到的技巧很好,但我想在运行时剪辑图像,即从资源或文件中加载幻灯片
答案 0 :(得分:4)
您必须按照以下步骤操作:
将ColorDepth
属性设置为cd32Bit
,
DrawingStyle
至dsTransparent
,
Height
= 48,
Width
= 48,
然后加载图像,结果将是
答案 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。