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加入)。然後
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檔案完成