zoukankan      html  css  js  c++  java
  • MFC显示GIF动画图片

    本帖则将讨论如何在MFC的对话框里显示GIF动画图片。一些关于传统控件的美化方法正在研究当中会陆续发帖的。

    这是本帖用到的一个VS2008例程。

     附件
     GifPicture.rar (138.1 KB)

    上传时间:2009-11-25 16:15
    下载次数:1173



    一.显示GIF图片控件类的介绍:

       无论是在VC6.0还是在VS2008中,都没有控件能显示GIF动画图片。能显示一些静态图片的只是Picture控件。本例程用到的GIF动画显示控件类是PictureEX。其定义文件是PictureEx.h,类的实现文件是PictureEx.cpp。有关该类的成员函数和方法说明如下:

    程序代码:
    BOOL Load(...) ——加载GIF 并准备绘画对象; 
    BOOL Draw() ——绘制图像或继续动画显示。
    void Stop() ——停止动画;
    void UnLoad() —— 停止动画并释放所有资源;
    void SetBkColor(COLORREF) ——为透明区域设置填充颜色; 
    COLORREF GetBkColor() ——获取当前填充颜色;
    BOOL IsGIF() —— 如果当前图像是 GIF 则返回 TRUE;
    BOOL IsAnimatedGIF() ——如果当前图像是动画 GIF,则返回TRUE;
    BOOL IsPlaying() ——如果当前图像是以动画方式显示则返回TRUE; 
    SIZE GetSize() ——返回图像尺寸。
    int GetFrameCount() ——返回当前图像的帧数量;
    BOOL GetPaintRect(RECT *lpRect) ——返回当前绘制的矩形。
    BOOL SetPaintRect(const RECT *lpRect) ——设置当前绘制的矩形;


    二.编程应用步骤:

        1.首先在网上下载两个小的GIF动画图片,由于VS2008无法识别这样的文件的扩展名,会弹出输入文件类型的扩展名,输入一个字符串即可。这个字符窜在后面的代码中会用到。


        2.建立一个对话框的MFC工程。将下载的资源文件拷贝至工程目录的Res文件夹下,然后用添加资源的方法将这两个资源文件加载到你的工程中。

        3.这一步非常重要。首先在我的例程里拷贝PictureEx.h和PictureEx.cpp到你的工程目录下,然后在将该类添加到你的工程中。

        4.在对话框面板上添加两个Picture控件分别给它们建立Control型的Static变量。我的例程里名字分别为m_gifpicture和m_girl。

        5.一切准备工作以经完成。下面是添加代码:

         在对话框类定义文件(我的例程是GifPictureDlg.h)中添加一句:

    程序代码:
    #include "PictureEx.h"   


        找到下面的两行:

    程序代码:
       Cstatic m_gifpicture;
        Cstatic m_girl;


        将其改为:

    程序代码:
        CPictureEx m_gifpicture;
        CPictureEx m_girl;


        在对话框的实现文件(我的例程是GifPictureDlg.cpp)中的对话框初始化函数BOOL CGifPictureDlg::OnInitDialog()中添加如下代码:

    程序代码:
    if (m_gifpicture.Load(MAKEINTRESOURCE(IDR_GIF1),_T("gif")))//IDR_GIF1是添加的GIF动画的ID号。gif即是在添加时所键入的文件类型
            m_gifpicture.Draw();
    if (m_girl.Load(MAKEINTRESOURCE(IDR_GIF2),_T("gif")))
            m_girl.Draw();


        下面编译该工程并运行一下,可以看到GIF动画。我的运行结果如下(由于是截屏的所以没有动画效果):

     
     
     
     
     题外话
    如何让自己的对话框显得更加好看,增加一些动态元素,这是我专注于MFC之后忙着解决的问题。

    在本论坛的本版块里,我陆续的发了两个这方面的帖子,列举如下:
    1.如何创建XP风格的按钮控件 http://bbs.bccn.net/thread-292048-1-1.html
    2.MFC显示Flash动画的编程实现 http://bbs.bccn.net/thread-292047-1-1.html
     
     
     
     
     
     
     
     
  • 相关阅读:
    docker从容器中怎么访问宿主机
    fail2ban CentOS7安装
    关于sql当中的isnull和ifnull的区别
    关于mybatis反向生成的时候,对于数据库当中的数据类型是text的处理。
    关于Java当中的MapUtils工具类的使用和注意事项。
    在大数据管理平台HDP的ambria的时候遇到python的安全认证的问题
    通过java代码实现调用excel当中的宏的操作。
    通过vba实现对word当中个的标签进行批量的替换
    通过vba实现对word当中的表格动态的插入行,同时对表中进行数据的填充。
    关于vba实现删除word文档中的指定表格。
  • 原文地址:https://www.cnblogs.com/huhu0013/p/4290074.html
Copyright © 2011-2022 走看看