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
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM