2010-04-05 8 views
6

Comment puis-je mettre un GIF animé dans ma boîte de dialogue dans mon application native Win32?Image animée dans Win32

J'ai un indicateur de chargement, et un processus de chargement.

Merci :-)

Répondre

5

Vous pouvez utiliser le Animation Control. Vous devriez convertir votre .gif en .avi cependant.

+3

Le suivi est question « Comment convertir un fichier .gif à un .avi? » Incluez cela dans votre réponse et ce serait parfait. –

+0

Depuis que Imagemagick a échoué, tout ce que je peux offrir c'est ce que google a soulevé. (ce qui n'est pas trop mal - j'ai cherché 'convertir gif en avi') Peut-être que quelqu'un d'autre a une bonne idée? – Fozi

0

Depuis que vous avez un délai serré sur celui-ci j'ai cherché un exemple de travail pour animer des gifs sur win32 et j'ai trouvé une bonne implémentation sur cplusplus.com. Il est appelé GIF View [lien direct] par Juan Soulie.

6

Vous ne savez pas si GDI + peut être considéré comme natif win32. Si vous pouvez l'utiliser, vérifiez l'exemple suivant: CodeProject

0

Il est assez simple d'implémenter une minuterie pour modifier ce qui est affiché. Vous pouvez définir un bloc de texte, sans texte, avec une couleur d'arrière-plan et simplement changer la taille. Il ressemblera à une barre de couleur en expansion avec très peu de frais généraux.

3

Son très facile à utiliser GdiPlus pour charger une variété de formats d'image, y compris jpeg, gif (animé), png et ainsi de suite.

Ce code montre comment charger rapidement une image unique d'une image dans un 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; 
} 
Questions connexes