繁体   English   中英

Win32中的动画图像

[英]Animated Image in Win32

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

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

谢谢 :-)

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

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

它非常容易使用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;
}

由于你在这个时间紧迫,我搜索了一个工作示例来为win32上的gif动画,我在cplusplus.com上找到了一个很好的实现。

它叫做Juan Soulie的GIF View [直接链接]。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM