2010-04-05 44 views
6

如何在我的本機Win32應用程序中將動畫GIF放到我的對話框中?Win32中的動畫圖像

我有一個負載指示和加載過程。

感謝:-)

回答

5

你可以使用Animation Control。但是你必須將你的.gif文件轉換成.avi文件。

+3

後續的問題是「你如何轉換爲.gif爲.AVI?」把它包括在你的答案中,這將是完美的。 – 2010-04-05 19:09:43

+0

由於Imagemagick失敗,我所能提供的就是谷歌提出的。 (這不算太糟糕 - 我搜索了'convert gif to avi')也許別人有個好主意? – Fozi 2010-04-06 04:37:35

0

既然你在這一個我尋找工作的例子動畫在Win32 GIF的時間緊迫,我找到了一個不錯的實現上cplusplus.com

這就是所謂的由胡安Soulie GIF View [直接鏈接]。

6

不確定GDI +是否可以視爲本地win32。在情況下,你可以用它查看下面的例子:CodeProject

0

這是相當簡單的實現定時器來改變電子錢包顯示的。你可以設置一個沒有文字的文本塊,並設置背景顏色,然後改變它的大小。它看起來像一個擴展的彩條,開銷很小。

3

它很容易使用GdiPlus加載多種圖像格式包括JPEG,GIF(動畫),PNG等。

此代碼演示如何快速加載圖像的單個幀到HBITMAP: -

#include <gdiplus.h> 
#pragma comment(lib,"gdiplus.lib") 

using namespace Gdiplus; 

HBITMAP LoadImageWithGdiPlus(LPCTSTR pszPngPath) 
{ 
    Image image(pszPngPath); 
    int width = image.GetWidth(); 
    int height = image.GetHeight(); 

    BITMAPINFO bmi; 
    bmi.bmiHeader.biBitCount = 32; 
    bmi.bmiHeader.biClrImportant = 0; 
    bmi.bmiHeader.biClrUsed = 0; 
    bmi.bmiHeader.biCompression = BI_RGB; 
    bmi.bmiHeader.biHeight = height; 
    bmi.bmiHeader.biPlanes = 1; 
    bmi.bmiHeader.biSize = sizeof (bmi.bmiHeader); 
    bmi.bmiHeader.biSizeImage = 0; //calc later 
    bmi.bmiHeader.biWidth = width; 
    bmi.bmiHeader.biXPelsPerMeter = 0; 
    bmi.bmiHeader.biYPelsPerMeter = 0; 
    BYTE* pBmp = NULL; 
    HBITMAP hbm = CreateDIBSection(NULL,&bmi,DIB_RGB_COLORS,(void**)&pBmp,NULL,0); 
    HDC hdc = CreateCompatibleDC(NULL); 
    HGDIOBJ hobj = SelectObject(hdc,hbm); 

    Graphics graphics(hdc); 
    graphics.DrawImage(&image,0,0); 

    SelectObject(hdc,hobj); 
    DeleteDC(hdc); 
    return hbm; 
}