【问题标题】:TImage losing loaded pictureTImage丢失加载图片
【发布时间】:2011-02-18 14:27:22
【问题描述】:

运行 Turbo Delphi Pro。

我正在使用 TImage 来显示 png 图像。

重启Delphi,加载dpr文件,TImage还在,但是图片丢失了, 编译前需要重新加载图片。

一开始我以为是路径问题,于是从dpr所在目录加载图片,但是没有用。

我还能尝试什么?

【问题讨论】:

  • 我认为 Turbo 版不支持 PNG,我认为这是在 Turbo 版之后添加的。
  • @罗伯特·洛夫。 Turbo Pro 有PNG。我用JPEG试了一下,它保留了图片。
  • 在我的 D2007 中没有内置的 PNG 支持(只有“来自 DevExpress 的 PNG 图形”)。我想这在 D2006/Turbo 中没有什么不同。
  • PNG JPEG,Delphi 多年来一直支持 JPEG,但我认为 PNG 是在更高版本的 Delphi 中添加的。如果可行,请尝试在运行时加载图片,然后在 Turbo 中支持 PNG。
  • 也许您的 DFM 是只读的?不太可能因为 TImage “坚持”,但谁知道呢?如果一切都失败了,也许您可​​以在加载 PNG 后复制粘贴 dfm 文件的内容。

标签: delphi png image timage


【解决方案1】:

试试这个:

  • 打开您的项目和表单 PNG。
  • (重新)加载 PNG 图像。
  • 保存并关闭您的表单。
  • 使用文本编辑器,加载您的表单 DFM
  • 我打赌你没有大的二进制文件 您的 TImage 对象,因为 PNG 内容 尚未保存。

归根结底,您必须将其作为资源包含并在运行时动态加载。

【讨论】:

    【解决方案2】:

    我在使用 D2006 时也遇到了这个问题。我使用的解决方案类似于 François 的解决方案。

    我有一个 TPngImageCollection 组件,我在设计时收集了所有图像。您需要从网上找到单位 PngImageList。 TPngImageCollection 组件的优点是您可以拥有不同大小的 PNG 图像的集合。

    在启动时的运行时,我从每个集合成员中分配 TImage:

    Image1.Picture.Assign (ImageCollection.Items [0].PNGImage) ;
    Image2.Picture.Assign (ImageCollection.Items [1].PNGImage) ;
    Image3.Picture.Assign (ImageCollection.Items [2].PNGImage) ;
    etc
    

    Bingo - 您可以生成具有 alpha 透明度的 PNG 原件(我使用来自 Serif 的 PhotoPlus 6.0 - 免费且功能强大)并在 TImage 中显示它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多