2012-08-08 177 views
3

我試圖在使用TImage的Firemonkey HD窗體中顯示動畫GIF,但是我看不到任何動畫方法。Firemonkey中的動畫GIF

使用Vcl.Imaging.gifImg不是一個選項,因爲類型不同。

有人可以建議一種方法來解決這個問題,或者可能組件動畫GIM圖像下Firemonkey?

我現在找到的唯一方法是:

  1. 通過gif.images創建TGIFImage實例,並加載GIF圖像

  2. 循環:

    一個。將當前圖像保存爲流

    b。 Image1.bitmap.loadFromStream [Image1是FMX:TImage]

有沒有更智能的解決方案?

+0

如果您要在後臺線程中進行映像,那麼解決方案可能並非如你所想。即使FMX本身具有它 - 它仍然和它完全按照這種方式完成 - 通過後臺線程進行幀切換。 otl.17slon.com可能使線程更容易 – 2012-08-09 14:23:11

+0

你也可以看看Vampyre圖像庫,它支持Mercurial中的FMX(但顯然不在2009年發佈的版本中)。但是,可能你仍然會實現幀交換工作線程。但我不知道。 – 2012-08-09 14:25:02

+1

Arioch':不是TTimer比使用線程更好更容易的選擇嗎?它們都以應用程序的消息隊列結束。還有一個線程每個GIF會消耗資源... – 2012-08-10 00:39:18

回答

3

您可以使用TBitmapListAnimation與一個單一的圖像,其中每個動畫幀的長條內。例如,如果你的動畫有4張,並通過32PX 32PX,那麼你需要通過32PX高創建128像素寬的圖像,並添加並排每一框架側...

然後,的TImage添加到窗體(你沒有加載位圖到這一點)

添加TBitmapListAnimation與TImage中,因爲它的父

雙擊AnimationBitmap和加載動畫圖像條

降下來屬性名,並選擇位圖

AnimationCount 4和AnimationRowCount 1在這個例子中

設置啓用爲true

TBitmapListAnimation已經很好的控制了動畫的幀速率,倒車,循環和插值。我找不到在FireMonkey2中獲取.gif動畫的方法,但如果您有辦法將動畫.gif轉換爲「卡通條」,那麼這是製作動畫的好方法。

PS這是Delphi XE3 ...所以不能說這些組件是否存在於以前的版本中。

+1

我相信這是XE3中的'TAniIndicator'工作原理。 「卡通帶」的正確名詞將是精靈或精靈列表。 :) – 2012-11-17 21:46:24