Come posso inserire una GIF animata nella mia finestra di dialogo nella mia applicazione Win32 nativa?Immagine animata in Win32
Ho un indicatore di caricamento e un processo di caricamento.
Grazie :-)
Come posso inserire una GIF animata nella mia finestra di dialogo nella mia applicazione Win32 nativa?Immagine animata in Win32
Ho un indicatore di caricamento e un processo di caricamento.
Grazie :-)
è possibile utilizzare il Animation Control. Dovresti convertire il tuo .gif in un .avi.
Poiché si dispone di un periodo di tempo limitato su questo ho cercato un esempio di lavoro per animare gif su Win32 e ho trovato una bella implementazione su cplusplus.com.
Si chiama GIF View [collegamento diretto] di Juan Soulie.
Non sicuro se GDI + potrebbe essere considerato come nativo Win32. Nel caso in cui si può utilizzare controllare il seguente esempio: CodeProject
E 'abbastanza semplice da implementare un timer per cambiare ciò che viene visualizzato. È possibile impostare un blocco di testo, senza testo, con un colore di sfondo e modificare semplicemente le dimensioni. Assomiglierà ad una barra colorata espandentesi con pochissimo overhead.
È molto facile da usare GDIPlus per caricare una varietà di formati di immagine inclusi JPEG, GIF (animato), png e così via.
Questo codice viene illustrato come caricare rapidamente un singolo fotogramma di un'immagine in 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;
}
La domanda di follow-up è "Come si fa a convertire un .gif ad un .avi?" Includilo nella tua risposta e sarebbe perfetto. –
Dal momento che Imagemagick ha fallito, tutto quello che posso offrire è ciò che google ha sollevato. (che non è male - ho cercato 'convert gif in avi') Forse qualcun altro ha una buona idea? – Fozi