¿Cómo puedo poner un GIF animado en mi cuadro de diálogo en mi aplicación nativa Win32?Imagen animada en Win32
Tengo un indicador de carga y un proceso de carga.
Gracias :-)
¿Cómo puedo poner un GIF animado en mi cuadro de diálogo en mi aplicación nativa Win32?Imagen animada en Win32
Tengo un indicador de carga y un proceso de carga.
Gracias :-)
podría utilizar el Animation Control. Sin embargo, tendrías que convertir tu .gif en .avi.
Dado que tiene un marco de tiempo ajustado en este busqué un ejemplo funcional para animar gifs en win32 y encontré una buena implementación en cplusplus.com.
Se llama GIF View [enlace directo] por Juan Soulie.
No estoy seguro de si GDI + podría considerarse como win32 nativo. En caso de que pueda usarlo, consulte el siguiente ejemplo: CodeProject
Es bastante simple implementar un temporizador para cambiar lo que se muestra. Puede configurar un bloque de texto, sin texto, con un color de fondo y simplemente cambiar el tamaño. Se verá como una barra de color en expansión con muy poca sobrecarga.
Es muy fácil de usar GdiPlus para cargar una variedad de formatos de imagen incluyendo jpeg, gif (animado), png y más.
Este código muestra cómo cargar rápidamente un solo fotograma de una imagen en 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 pregunta de seguimiento es "¿Cómo convertir un archivo .gif a un .avi?" Incluye eso en tu respuesta y sería perfecto. –
Dado que Imagemagick falló, todo lo que puedo ofrecer es lo que trajo a colación Google. (lo cual no está mal, busqué 'convert gif to avi') ¿Quizás alguien más tenga una buena idea? – Fozi