StretchDIBits 失败,有时什么也画不出来,
我正在使用 gdi c++, 如果我绘制大图像(例如 7000*5000),StretchDIBits 功能有时会失败。 它什么也没画。 GetLastError() 表示系统资源不足。 任何人都可以解释为什么即使 DC 已成功准备,StretchDIBits 也需要资源。
I am using gdi c++,
StretchDIBits function sometimes failed if I draw large Images such as 7000*5000.
It draw nothing. GetLastError() says no enough system resource.
Can anyone explain why StretchDIBits need resource even The DC is prepared successfully.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
StretchDIBits 可能会将源图像扩展为与目标位图尺寸相同的临时位图,然后作为最后一步将临时位图复制到目标中。因此,即使您有足够的内存在 StretchDIBits 调用之前创建目标位图 (140 MB),您的系统也没有额外的 140 MB 来分配给临时位图。
It may be that StretchDIBits expands the source image into a temporary bitmap of the same dimensions as the destination bitmap, and then copies the temporary into the destination as the final step. So even if you have enough memory to create the destination bitmap (140 MB) before the StretchDIBits call, your system doesn't have the additional 140 MB to allocate to the temporary bitmap.