1. 程式人生 > >MFC載入gif動態圖片的方法

MFC載入gif動態圖片的方法

在一個專案中需要加入GIF動畫。一個版本時通過IE瀏覽器顯示網頁的形式,js指令碼、CSS他人編寫較繁瑣;另一個VC專案需要使用MFC直接載入GIF動畫。載入GIF動畫網上有多種方式,大多數是將GIF填進資源,使用PictureEx類load資原始檔  如下:
PictureEx圖片顯示類支援以下格式的圖片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特別推崇的是能夠做出動畫,而且輕而易舉,確實很COOL。 
下面是周詳的程式設計過程:

1. 新建專案:在VC6中用MFC新建一個基於對話方塊的GifDemo應用程式,接受任何預設選項即可;

2.在專案中插入文件:把PictureEx.h,PictureEx.cpp文件copy 到專案文件夾下,Project->Add to Project->Files中選上PictureEx.h,PictureEx.cpp, Insert;

3.加入圖片控制元件:從對話方塊控制元件中把Picture Control(圖片控制元件)拖入主對話方塊中,修改其屬性:ID:IDC_GIF,TYPE:Rectangle,其餘接受預設選項。再在ClassWiard中為IDF_GIF加入CSatic控制變數m_GifPic, 注意看一下,GifDemoDlg.h中是否加上了#include "PictureEx.h"(由ClassWiard加入)。然後

將CSatic m_GifPic;更改成CPictureEx m_GifPic;

4.載入動畫文件:先將要載入的動畫文件放到 res 資源文件夾下,再將其Import進專案中,由於MFC只支援256BMP文件的圖片,因此,我們要新建一個圖片型別:"GIF",我在這裡將我網站的宣傳圖片roaring.gif放進去 ,並將其ID修改成:IDR_GIFROARING。

import(匯入)gif動畫的周詳過程:
在resourceview視窗中,單擊滑鼠右鍵,在出現的環境選單中選擇“import...”命令,會出現“import resource”選擇文件對話方塊,文件型別選擇“任何文件(*.*)”,open as 選項為"auto",再選擇動畫文件所在目錄,選上要載入的動畫文件 roaring.gif,再單擊 import,由於gif動畫型別不是vc預設的文件型別,這時會出現"custom resource type"對話方塊,鍵入“"gif"”,再單擊ok,然後再修改其id。


5.在程式的適當位置添入載入程式碼: 這裡,我們在CGifDemoDlg::OnInitDialog()函式中加入如下程式碼:

// TODO: Add extra initialization here
if (m_GifPic.Load(MAKEINTRESOURCE(IDR_GIFROARING),_T("Gif")))
m_GifPic.Draw();  

但是由於我們的軟體要寫入硬體裝置中,對檔案大小有嚴格要求,幾個軟體間共用同一個GIF,必須採用動態呼叫GIF檔案載入進MFC中。
檢視PictureEx類,會發現類中有多個load函式,其中一個可以Load檔名,但是呼叫過程不是簡單的Load,在Draw的樣子顯示GIF動畫。試驗多次後來發現需要在Load檔案之前 Static::Create一下。 原始碼如下:
 m_GifPic.Create(NULL,WS_CHILD | WS_VISIBLE |SS_ENHMETAFILE,CRect(50,50,100,100),this,1234);
 m_GifPic.Load(_T("c://1.gif")); 
 m_GifPic.Draw();//


OK  使用PictureEx動態載入GIF檔案完成