TCHAR szModule[MAX_PATH] = {0};
GetModuleFileName(NULL,szModule,MAX_PATH);
PathRemoveFileSpec(szModule);
PathAppend(szModule,L"success.gif");
Image img(szModule);
UINT nCount = img.GetFrameDimensionsCount();
GUID* pDimensionsIDs = (GUID*)new GUID[nCount];
img.GetFrameDimensionsList(pDimensionsIDs,nCount);
TCHAR strGUID[39]={0};
StringFromGUID2(pDimensionsIDs[0],strGUID,39);
UINT nFrameCount = img.GetFrameCount(&pDimensionsIDs[0]);
delete[] pDimensionsIDs;
int size = img.GetPropertyItemSize(PropertyTagFrameDelay);
byte* p = new byte[size];
PropertyItem* pItem = (PropertyItem*)p;
img.GetPropertyItem(PropertyTagFrameDelay,size, pItem);
int fcount = 0;
GUID guid = FrameDimensionTime;
HDC hDC = ::GetDC(pDlg->GetSafeHwnd());</span>
while(TRUE)
{
Graphics gc(hDC);
gc.DrawImage(&img,0,0,img.GetWidth(),img.GetHeight());
img.SelectActiveFrame(&guid,fcount++);
if (fcount == nFrameCount)
{
fcount = 0;
}
long pause = ((long*)pItem->value)[fcount]*10;
Sleep(pause);
}
::ReleaseDC(pDlg->GetSafeHwnd(),hDC);
GDI+播放GIF动图
本文介绍了如何利用GDI+库在Windows应用程序中实现GIF动图的播放。通过获取GIF文件的帧数、帧延迟时间和选择活动帧,结合Sleep函数实现连续播放效果。具体步骤包括获取模块文件名、加载GIF图像、处理帧信息以及在设备上下文中绘制图像。
摘要由CSDN通过智能技术生成