我正在用 winapi(非 MFC)制作一个窗口 c++ 并显示 gif。为此,我使用 GDI++。我正在从路径中将 gif 加载到 GDI::Image,但我想从资源中加载它。我该怎么做?
hMWDC = GetDC(hWnd);
pGphcs = new Graphics(hMWDC);
WCHAR path[MAX_PATH];
GetModuleFileNameW(NULL, path, MAX_PATH);
PathRemoveFileSpecW(path);
PathAppendW(path, L"gifs\\test.gif");
pImg = new Image(path);
if (pImg) {
nFrmCnt = pImg->GetFrameCount(&FrameDimensionTime);
SetTimer(hWnd, DRAW_ANIM, 100, NULL);
}
case WM_TIMER:
if (wParam == DRAW_ANIM)
{
pImg->SelectActiveFrame(&FrameDimensionTime, nFrm);
Rect DRC(0, 0, pImg->GetWidth(), pImg->GetHeight());
pGphcs->Clear(Color(128, 128, 128));
pGphcs->DrawImage(pImg, DRC);
if (nFrm < (nFrmCnt - 1)) nFrm++; else nFrm = 0;
}
break;
最佳答案
有一张图片constructor接受 IStream*。
您可以通过调用 SHCreateMemStream 创建流在资源的原始缓冲区上,可以通过调用 FindResource 获得/LoadResource/LockResource和 SizeOfResource .
关于c++ - 如何从 C++(winapi) 中的资源加载 GDI::Image (GIF)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57126168/