6.04.2007

CE GIF Animation

OS 要加入 GIF Decoder 這一個item。

然後就是取得 GIF 的loopcount 和 FrameDelay,在Groupe中有一篇 : Time delay of animated gif frames...
一位好心人士 stephd 貼了一個sample code,並且說明 GIF 動畫與靜態檔的差異:
多了 :
 PropertyTagLoopCount
PropertyTagFrameDelay
這兩個property.

stephd 並且很好心的附上democode..
    int sizeloopcount = m_pImage->GetPropertyItemSize(PropertyTagLoopCount);
if (sizeloopcount != 0)
{
PropertyItem * pPropertyItem = (PropertyItem*)
malloc(sizeloopcount);
m_pImage->GetPropertyItem(PropertyTagLoopCount, sizeloopcount,
pPropertyItem);
m_AnimatedLoopCount = *((short*)pPropertyItem->value);
delete pPropertyItem;
}

int sizedelay = m_pImage->GetPropertyItemSize(PropertyTagFrameDelay);

if (sizedelay != 0)
{
PropertyItem * pPropertyItem = (PropertyItem*) malloc(sizedelay);
m_pImage->GetPropertyItem(PropertyTagFrameDelay, sizedelay,
pPropertyItem);
// pPropertyItem->value is an array of long. Each long value
// correspond to the delay between each frame / 10 ms
delete pPropertyItem;
}

2 則留言:

Jane 提到...

請問下您是否知道如果在wm6 下始用 " image library " 如何去播放gif動畫呢?
是否有sample code可以共享呢, will be very appreciation.

Checko 提到...

我不知道吔。但是播放動畫(multi-frame) GIF 的code,就像上面轉貼的code
一樣。
... 但是.. framedelay 應該是個array...