9

如何在我的本机 Win32 应用程序中将动画 GIF 放到我的对话框中?

我有一个加载指示器和一个加载过程。

谢谢 :-)

4

5 回答 5

6

不确定是否可以将 GDI+ 视为本机 win32。如果您可以使用它,请检查以下示例:CodeProject

于 2010-04-05T14:55:51.950 回答
5

您可以使用动画控件。不过,您必须将 .gif 转换为 .avi。

于 2010-04-05T13:21:55.743 回答
3

它非常易于使用 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;
}
于 2010-04-06T09:51:40.727 回答
0

实现一个定时器来改变显示的内容是相当简单的。您可以设置一个文本块,其中没有文本,具有背景颜色,只需更改大小。它看起来像一个扩展的彩色条,开销很小。

于 2010-04-05T19:03:55.873 回答
0

由于您对此的时间紧迫,我搜索了一个在 win32 上为 gif 设置动画的工作示例,并在cplusplus.com上找到了一个不错的实现。

它被 Juan Soulie 称为GIF View [直接链接]。

于 2010-04-05T13:50:37.703 回答