У меня проблема, когда я пытаюсь нарисовать растровое изображение в другом с помощью функции «DrawImage» GDI +.
Моя проблема возникает только тогда, когда размеры растровых изображений довольно велики (в приведенном ниже коде я заменил переменные размера фактическим значением типичного нерабочего случая).
Проблема в : Результат DrawImage — «Недостаточно памяти» (и поэтому ничего не отображается).
Вот код (упрощенный):
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)
Я знаю, что эти изображения довольно большие, но в этом случае моя программа «только» использует около 300Мо ОЗУ, что не так уж много (у меня 8Го …). И я особенно не понимаю, почему мне нужно больше памяти на этом этапе, поскольку оба растровых изображения уже созданы, и я просто «копирую» данные одного в другой (по крайней мере, это то, что я хочу сделать!).
Я работаю с C ++ MFC под Visual Studio 2013, и мой компьютер 64-битный с 8Go оперативной памяти (Windows 10).
Большое спасибо за ответ,
Ура,
Алекс.
Задача ещё не решена.
Других решений пока нет …