【问题标题】:Delphi XE4 - TImage is not displayed at runtimeDelphi XE4 - TImage 在运行时不显示
【发布时间】:2015-06-12 01:28:45
【问题描述】:

注意:在最初的问题中我很着急并错误地认为问题与VCL Styles有关,但经过一些测试,它似乎与SynGdiPlus.pas有关,所以我删除了原始描述.


问题

TImage 在设计时正确显示图像,但在运行时不正确。

原因

Gdip.RegisterPictures;//initialize SynGdiPlus.pas from Synopse.info

我的解决方案

删除了SynGdiPlus.pas的使用并通知作者问题,使用VCL提供的对PNG文件的内置支持。

【问题讨论】:

  • 显示有问题并不是一个有意义的问题描述。您遇到了哪些问题?你在你的问题中多次说有一个问题,但你从来没有解释过那个问题。在使用样式的 VCL 应用程序中,来自 ImageList 的图像对我来说似乎很好。
  • @KenWhite,在主题中我写了“来自 TImageList 的图像没有出现”。但现在我将修改问题。
  • @EdwinYip,如果您使用第三方组件,您必须询问供应商是否支持 VCL 样式。
  • 找到了一条线索——在从 synopse.info 中删除 SynGdiPlus.pas 的 Gdip.RegisterPictures 以加载除 .bmp 以外的图像后,TImage 恢复正常!貌似和VCL Styles没有关系……但是其他使用TImageList的控件还是有问题,我再深挖……
  • 请参阅问题正文中的更新 2,了解我发现的原因,不确定是否应该删除问题,或发布我自己的答案...

标签: delphi delphi-xe4


【解决方案1】:

您的 SynGdiPlus 版本显然已被弃用。

current revision 有一个NOTSYNPICTUREREGISTER 条件,默认启用:

initialization
{$ifndef NOTSYNPICTUREREGISTER}
  Gdip.RegisterPictures; // will initialize the Gdip library if necessary
{$endif}

确保您收到the latest revision of the source code tree

【讨论】:

  • 嗨 Arnaud,实际上我打算打电话给 RegisterPictures() ,因为想用于加载图像文件。现在我改用 RTL。
  • @EdwinYip 是的,可以在 VCL 级别注册一个图像类。您可以使用 SynGdiPlus 图像类,但您必须手动使用它们,在代码中创建类实例。据报道,AFAIK SynGdiPlus 类比标准 VCL 版本更快,尤其是常规 TJpeg。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
相关资源
最近更新 更多