设为首页 加入收藏

TOP

26.4.1 播放GIF动画
2013-10-07 13:13:03 来源: 作者: 【 】 浏览:59
Tags:26.4.1 播放 GIF 动画

26.4  多媒体文件的播放

多媒体文件的格式有多种,本节介绍几种常见的多媒体文件的播放方法。主要包括如何实现播放GIF动画、Flash动画、RM文件、VCD文件和显示JPEG图像。用户通过本节的学习,应该掌握这些基本多媒体文件的播放方法。

26.4.1  播放GIF动画

GIF文件是图形交换文件的格式,是由一组相隔指定间隔时间显示的图片组组成。使用GDI+可以播放GIF动画。为此,首先需要调用GetFrameDimensionsCount()函数来获取GIF动画中具有的帧数数目,并通过Image对象的GetPropertyItem()函数获取每帧图片之间的时间间隔。然后显示GIF文件,并设置当前有效的框架数据,根据获取的每帧的时间间隔,停顿一定的时间,继续显示,如此循环,就可以播放GIF动画了。具体代码如下:

  1. void CPlayMultiMediaDlg::OnButtonPlaygif()          // 播放GIF文件  
  2. {  
  3.     Image image(L"C:\\byebye.gif");                 // 定义Image对象  
  4.     UINT uiCount = image.GetFrameDimensionsCount(); // 获取帧数  
  5.     GUID *pDimensionIDs=(GUID*)new GUID[uiCount];  
  6.     image.GetFrameDimensionsList(pDimensionIDs, uiCount);   // 获取帧数据  
  7.     UINT uiFrameCount=image.GetFrameCount(&pDimensionIDs[0]);  
  8.     delete []pDimensionIDs;  
  9.     UINT uiSize;  
  10.     uiSize = image.GetPropertyItemSize(PropertyTagFrameDelay);  
  11.                                                         // 获取帧延时长度  
  12.     PropertyItem* pItem = (PropertyItem*)malloc(uiSize);  
  13.     image.GetPropertyItem(PropertyTagFrameDelay, uiSize, pItem);  
  14.                                                         // 获取属性项  
  15.     GUID Guid = FrameDimensionTime;  
  16.     CDC* pDC = GetDC();                                 // 获取设备上下文  
  17.     while(true)                                         // 依次处理每帧  
  18.     {  
  19.         Graphics gh(pDC->m_hDC);                    // hDC是
    外部传入的画图DC  
  20.         gh.DrawImage(&image,0, 0, image.GetWidth(), image.GetHeight());  
  21.         image.SelectActiveFrame(&Guid, uiCount++); // 重新设置
    当前的活动数据帧  
  22.         if(uiCount == uiFrameCount) uiCount0;  
  23.         long lPause = ((long*)(pItem->value))[uiCount];// 计算
    此帧要延迟的时间  
  24.         Sleep(lPause);                                 // 停止
    指定长度时间值  
  25.     }  

上面代码在画布的左上角播放C:\\byebye.gif GIF动画。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇26.4.2 播放Flash动画 下一篇26.3.3 系统托盘动态图标

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: