当前位置:  编程技术>c/c++/嵌入式

VC++实现输出GIF到窗体并显示GIF动画的方法

    来源: 互联网  发布时间:2014-10-26

    本文导语:  本文讲述了VC++在窗体中显示GIF动画的方法,这是主要代码部分,在这段代码中,VC++将使用GDI技术加载GIF图像,定义GUID数组、定义指针、初始化各成员变量、释放属性对象、释放GUID等资源等。 代码如下: //加载GIF文件 void C...

本文讲述了VC++在窗体中显示GIF动画的方法,这是主要代码部分,在这段代码中,VC++将使用GDI技术加载GIF图像,定义GUID数组、定义指针、初始化各成员变量、释放属性对象、释放GUID等资源等。

代码如下:

//加载GIF文件
void COutputGIFDlg::OnBrowse()
{
 CFileDialog flDlg(TRUE, "", "", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
   "GIF|*.gif;||");//定义文件打开对话框
 if (flDlg.DoModal() == IDOK)
 {
 CString szText;
 szText = flDlg.GetPathName();
 m_FileName.SetWindowText(szText);
 m_pBmp = Bitmap::FromFile(szText.AllocSysString()); //加载GIF图像
 szText.ReleaseBuffer();
 m_nCount = m_pBmp->GetFrameDimensionsCount(); //获取帧维数
 GUID *pGuids = new GUID[m_nCount]; //定义一个GUID数组
 m_pBmp->GetFrameDimensionsList(pGuids,m_nCount); //获取图像帧的GUID
 m_FrameCount = m_pBmp->GetFrameCount(pGuids); //获取GIF帧数
 UINT nSize; //定义一个整型变量
 m_nCount = 0; //初始化成员变量
 m_pBmp->GetPropertySize(&nSize, &m_nDelay); //获取属性大小
 PropertyItem *pItem = NULL; //定义属性指针
 pItem = (PropertyItem*)malloc(nSize); //为属性指针分配合适的空间
 m_pBmp->GetAllPropertyItems(nSize, m_nDelay, pItem);//获取属性信息
 m_nDelay = ((long*)pItem->value)[0]; //获取第一帧的延时
 free(pItem); //释放属性对象
 delete [] pGuids; //释放GUID
 m_nIndex = 0; //初始化成员变量
 KillTimer(1);
 SetTimer(1, 300, NULL);
 }
}
void COutputGIFDlg::OnTimer(UINT nIDEvent)
{
 GUID Guid = FrameDimensionTime; //定义一个GUID
 CDC* pDC = GetDC(); //获取窗口的设备上下文
 //定义一个内存画布
 CMemDC dc(pDC, CRect(20, 50, m_pBmp->GetWidth()+20, m_pBmp->GetHeight()+50));
 Graphics gh(dc.m_hDC); //定义一个图像对象
 //向设备上下文中绘制图像
 gh.DrawImage(m_pBmp, 0, 0, m_pBmp->GetWidth(), m_pBmp->GetHeight());
 m_pBmp->SelectActiveFrame(&Guid, m_nIndex++);//设置下一帧
 if(m_nIndex == m_FrameCount) //判断当前帧是否为尾帧
  m_nIndex = 0; //将当前帧设置为第一帧
 CDialog::OnTimer(nIDEvent);
}
void COutputGIFDlg::OnCancel()
{
 if (m_pBmp != NULL)
 {
 delete m_pBmp;
 m_pBmp = NULL;
 }
 CDialog::OnCancel();
}

    
 
 

您可能感兴趣的文章:

  • C#实现让窗体永远在窗体最前面显示的实例
  • C# 无边框窗体之窗体移动实现代码
  • .NET实现父窗体关闭而不影响子窗体的方法
  • WinForm子窗体访问父窗体控件的实现方法
  • C#最简单的关闭子窗体更新父窗体的实现方法
  • Jb7问题集锦之一!如何实现Metal风格窗体
  • C#中禁止Winform窗体关闭的实现方法
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • c# 多文档窗口修改mdi窗体背景色的实现代码
  • JBuilder中如何实现MDI窗体~?还有画图是如何实现的~?需要怎么做?偶找不到资料……
  • C#实现随鼠标移动窗体实例
  • c# winform 关闭窗体时同时结束线程实现思路
  • Java中的MDI窗体是怎么实现的,向JBuilder那种是什么Layout?
  • C#怎样才能实现窗体最小化到托盘呢?
  • java实现jframe透明窗体示例
  • C# 透明窗体制作实现方法比较分析
  • C# 无边框窗体边框阴影效果的简单实现
  • C#模拟MSN窗体抖动的实现代码
  • C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法
  • 关于编写bat文件实现在新窗体启动不同程序的问题
  • DevExpress实现GridControl显示Gif动画的方法
  • 用JAVA的IO怎么实现图形文件(GIF/JPG)的读写,100分奉送!
  • PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
  • java实现gif动画效果(java显示动态图片)
  • 如何实现用JAVA生成动态的gif文件,例如里面的文字会闪动的那种?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在脚本中如何实现输出格式化输出
  • 编一个模拟shell实现的程序,怎么实现输入输出重定向?谢谢
  • JMF中如何实现多路音频的混合输出?期待高手指教!
  • 怎样实现利用fprintf,输出定长字串,位数不足时在左侧填入指定字符填充。。
  • 怎么实现shell中的输入输出重定向,谢谢!
  • MT9D131是否可以实现灰度图像输出
  • linux下怎么实现在屏幕上指定地方输出字符?
  • 请问:如何实现jsp的汉字输出?
  • asp.net用Zxing库实现条形码输出的具体实现
  • ******"Servlet根据JSP视图的需求生成JavaBeans的实例并输出给JSP环境"如何实现上面这句话的效果??*******
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • C#实现根据数字序号输出星期几的简单实例
  • Shell编程:怎么实现从1到100的输出?
  • Java实现字符串倒序输出的常用方法小结
  • c#实现输出本月的月历
  • C语言实现输出链表中倒数第k个节点
  • C++输出斐波那契数列的两种实现方法
  • PHP使用range协议实现输出文件断点续传代码实例
  • 在proc文件系统中实现程序输入和输出,怎么实现?
  • c实现字符串倒序输出
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3