【问题标题】:How can animate gif loaded in TImageList?如何在TimageList中加载动画GIF?
【发布时间】:2013-11-13 11:39:23
【问题描述】:

我想知道如何为 TImageList 中的 gif 图像设置动画。

我知道,如果我们可以访问 TImageList 中每个图像的图形,则可以将图片的图形转换为 TGIFImage 并将 Animate 属性设置为 true。但问题是我们如何访问 TImageList 中加载的图像并将其转换为 TGIFImage 并设置该动画属性?

编辑:

我们如何在 TTreeView 中制作 gif 动画?

正如 David Heffernan 回答的那样,TImageList 不适合保存 gif 图像。但这个问题的目的是在树视图中有一个动画 gif。在 Remy-lebeau 的建议下,我为此编写了一个单元。在本单元中,我定义了两个类。第一个使用 TImagelist 作为其属性的 TGifImageRefrence 并且必须被分配,并且具有将 gif 图像添加到此图像列表的过程。每帧将在 Imagelist 中保存为单个图像,并且将保存帧的索引和动画速度。 第二类是 TGifNode,它的目的是成为 TreeView 中的一个节点。它包含一个计时器并接受一个 TGifImageRefrence 作为它的属性。您可以从此类中为您自己的树视图节点继承一个类。我用这个单元写了一个例子,把它们放在一起,你可以从http://loghman.ir/MySource/GifInTreeView.zip下载它

【问题讨论】:

    标签: delphi gif animated-gif timagelist


    【解决方案1】:

    TImageList 存储相同大小的静态图像列表。它不适合托管动画 GIF。您可以从动画 GIF 中解压缩所有图像并将它们放入图像列表中。然后再重建它们以制作动画。那似乎毫无意义。您应该使用 TGIFImage 来制作 GIF 动画。

    【讨论】:

    • 我想要这样做是因为我想要一个包含一些闪烁图像的 TreeView。其中一些树节点需要提醒用户。
    • 好吧,我想你需要找到一个不同的解决方案来解决这个问题。但是您不能将动画 GIF 放在图像列表中,设置树中节点的图像索引并希望它会动画。不会发生。
    • 但是,您可以将各个帧作为单独的图像放入 ImageList 中,然后使用计时器每隔几秒更改一个节点的图像索引以循环通过 ImageList,从而呈现动画效果。
    • @RemyLebeau 感谢您的建议。为此我写了一个单元。任何喜欢在他的 TreeView 中有动画 gif 的人都可以使用它。 loghman.ir/MySource/GifInTreeView.zip我真的不明白为什么不知道答案的人会在我的问题上加上减号。真的很有趣! :))
    • @Loghman 我猜你被否决了,因为你的问题没有问到你的实际问题,而是关于如何让你不合适的解决方案尝试工作。我已经平衡了。我还建议,如果您在未来陈述您的实际问题以及您尝试解决的问题,它可能会有所帮助。
    猜你喜欢
    • 2018-03-20
    • 2020-01-29
    • 2013-08-04
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多