c++ - Image::GetFrameCount 将 Image::LastError 设置为 win32error c++ gdi+
问题描述
此函数会在一段时间后更改图像的活动帧但是当我尝试获取维度的帧数时,它将 image->lasterror 设置为 Win32Error
有什么办法可以解决吗?(Windows 10、Visual Studio 2017 社区)
void PlayImageAnim(Gdiplus::Image*&image, int delay,bool Looped)
{
using namespace Gdiplus;
if (Looped == true)
{
while (true)
{
UINT dcount = 0;
GUID *dimensionsIDs;
dcount = image->GetFrameDimensionsCount();
dimensionsIDs = new GUID[dcount];
UINT frame_count = image->GetFrameCount(&dimensionsIDs[0]);
int y = 0;
GUID pageGUID = FrameDimensionTime;
int size = image->GetPropertyItemSize(PropertyTagFrameDelay);
Gdiplus::PropertyItem*pr_item = (Gdiplus::PropertyItem*)malloc(size);
for (UINT i = 0; i <= frame_count; i++)
{
/*graphics.DrawImage(image, image_rect);*/
/*long delay = ((long*)pr_item->value)[i] * 10;*/
image->SelectActiveFrame(&pageGUID, i);
std::this_thread::sleep_for(std::chrono::milliseconds(delay));
}
image->SelectActiveFrame(&pageGUID, 0);
}
}
else
{
UINT dcount = 0;
GUID *dimensionsIDs;
dcount = image->GetFrameDimensionsCount();
dimensionsIDs = new GUID[dcount];
UINT frame_count = image->GetFrameCount(&dimensionsIDs[0]);
GUID pageGUID = FrameDimensionTime;
int size = image->GetPropertyItemSize(PropertyTagFrameDelay);
Gdiplus::PropertyItem*pr_item = (Gdiplus::PropertyItem*)malloc(size);
for (UINT i = 0; i <= frame_count; i++)
{
image->SelectActiveFrame(&pageGUID, i);
std::this_thread::sleep_for(std::chrono::milliseconds(delay));
}
image->SelectActiveFrame(&pageGUID, 0);
}
}
它必须与项目其他部分的类似部分
解决方案
推荐阅读
- javascript - 有什么方法可以在 dynmodb 中创建关系
- java - 在 some.fully.qualified.name.Class$1 处出现 NoClassDefFoundError
- java - rest api - PUT 方法不消耗 GET 方法获取的数据
- database - 用户和通知之间有什么样的数据库关系?
- excel - 如何从另一个文件vba匹配索引宏
- css - Angular Material Pagination - 如何用文本替换第一个和最后一个图标?
- html - 如何在 Nuxtjs 应用程序中使用 Bootstrap Vue 创建特定的引导多选下拉菜单
- mysql - 为什么mysql执行sql需要多次转换字符集
- apache - 如何配置 HTTP 服务器以在 HTTP 标头中设置 REMOTE_USER?
- python - 如何序列化一个对象