Изображение с анимацией в Win32

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

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

Спасибо :-)

8
задан frbry 5 April 2010 в 12:36
поделиться

5 ответов

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

6
ответ дан 5 December 2019 в 12:09
поделиться

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

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

0
ответ дан 5 December 2019 в 12:09
поделиться

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

0
ответ дан 5 December 2019 в 12:09
поделиться

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;
}
3
ответ дан 5 December 2019 в 12:09
поделиться

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

5
ответ дан 5 December 2019 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: