如何将PNG放入TImageList?

时间:2014-10-06 15:13:09

标签: delphi delphi-xe6

我有一张PNG图片,我试图在设计时加载到TImageList

enter image description here

我有一个图像列表,然后我尝试打开我的png:

enter image description here

添加后,显示的图片不正确:

enter image description here

我错过了打开文件的哪些步骤?

编辑:让我们尝试更多文件

enter image description here enter image description here

enter image description here enter image description here

enter image description here enter image description here

编辑:更多设置

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

任何人都希望看到的其他变化?

1 个答案:

答案 0 :(得分:4)

问题是我使用的是GraphicEx library

中包含的功能
procedure Stretch(NewWidth, NewHeight: Cardinal; Filter: TResamplingFilter; 
      Radius: Single; Source: TBitmap);

对此函数的调用是在 ResizeGraphic 辅助函数中抽象出来的。

问题是GraphicEx还有自己的PNG实施:

TPNGGraphic = class(TGraphicExGraphic)

然后在运行时以可用的文件格式注册:

initialization
RegisterFileFormat('png', gesPortableNetworkGraphic, '',
      [ftRaster], False, True, TPNGGraphic);

输入自定义控件

我们使用一些自定义Delphi组件。

其中一些组件直接或间接导入对GraphicEx的引用。这意味着GraphicEx正在接管设计中IDE内存在的任何类的PNG文件类型的处理。

解决方案是定义RegisterFileFormat

initialization部分中的所有GraphicEx.pas
{$ifdef PortableNetworkGraphic}
RegisterFileFormat('png', gesPortableNetworkGraphic, '', [ftRaster], False, True, TPNGGraphic);
{$endif}

然后重新构建我的所有运行时和设计时包。

完成后,IDE重新启动:

enter image description here

  

注意:任何已发布到公共领域的代码。无需归属。