Анимированное изображение в Win32 - PullRequest
8 голосов
/ 05 апреля 2010

Как я могу добавить анимированный GIF в мой диалог в моем родном приложении Win32?

У меня есть индикатор загрузки и процесс загрузки.

Спасибо: -)

Ответы [ 5 ]

6 голосов
/ 05 апреля 2010

Не уверен, что GDI + можно рассматривать как родной win32. Если вы можете использовать его, проверьте следующий пример: CodeProject

5 голосов
/ 05 апреля 2010

Вы можете использовать Управление анимацией . Вы должны были бы преобразовать свой .gif в .avi.

3 голосов
/ 06 апреля 2010

Очень просто использовать 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;
}
0 голосов
/ 05 апреля 2010

Довольно просто реализовать таймер для изменения отображаемого. Вы можете настроить текстовый блок, без текста, с цветом фона и просто изменить размер. Он будет выглядеть как расширяющаяся цветная полоса с очень маленькими накладными расходами.

0 голосов
/ 05 апреля 2010

Поскольку у вас жесткие временные рамки, я искал рабочий пример для анимации GIF-файлов на win32 и нашел хорошую реализацию на cplusplus.com .

Это называется GIF View [прямая ссылка] Хуана Соули.

...