Gdi + DrawImage返回Out of Memory(C ++)

时间:2017-03-08 09:58:41

标签: c++ out-of-memory gdi+ drawimage

当我尝试使用GDI +的“DrawImage”功能将位图绘制到另一个位图时,我遇到了问题。 我的问题只出现在位图的大小相当大的情况下(在下面的代码中,我将大小变量替换为典型的非工作情况的实际值)。

问题是: DrawImage结果是“Out of Memory”(因此没有显示任何内容)。

这是代码(简化):

Bitmap* pclBitmapDest = new Bitmap(12821, 2400); // Creation and internal status is OK
Graphics* pclGraphicsDest = Graphics::FromImage(pclBitmapDest); // Creation and internal status is OK

Bitmap* pclBitmapSource = new Bitmap(12620, 2400); // Creation and internal status is OK
Graphics* pclGraphicsSource = Graphics::FromImage(pclBitmapSource); // Creation and internal status is OK

// ... Work on pclGraphicsSource to add some shapes into... Everything is OK.

ImageAttributes l_clImageAttributes;
clImageAttributes.SetColorKey(Color::White, Color::White, ColorAdjustTypeBitmap);
Rect stRectangleSource(200, 0, 12620, 2400);

// Add the "Source" bitmap to the "Dest" bitmap
pclGraphicsDest->DrawImage(pclBitmapSource, stRectangleSource, 0, 0, pclBitmapSource->GetWidth(), pclBitmapSource->GetHeight(), UnitPixel, &clImageAttributes); // lastResult=OutOfMemory (3)

我知道这些图像非常大,但在这种情况下,我的程序“仅”使用大约300Mo的RAM并不是那么多(我有8Go ...)。而且我特别不明白为什么我在这一步需要更多内存,因为两个Bitmap都已经创建了,而我只是“复制”另一个中的一个数据(至少那只是我想要做的!)。

我在Visual Studio 2013下使用C ++ MFC,而我的PC是64位,内存为8Go(Windows 10)。

非常感谢您的回答, 干杯, 亚历克斯。

0 个答案:

没有答案