System.OutOfMemoryException [BITMAP]

Столкнулся с очень странной багой при работе с битмапами.

Цель - вырезать кусок изображения. С pictureBox`а или напрямую изображения - не важно.

Рассмотрим 2 примера с изображением напрямую.

Первый:

 Bitmap from = new Bitmap(imagePath);
 Bitmap to   = from.Clone(new Rectangle(200, 200, 650, 800), from.PixelFormat);

Второй:

Bitmap from = new Bitmap(imagePath);
Bitmap to   = from.Clone(new Rectangle(20, 20, 650, 800), from.PixelFormat);

Выполняем второй пример - все отлично работает (хотя размер вырезанного изображения больше вырезанного изображения из первого примера).

А вот при первом примере получаю ошибку:

System.OutOfMemoryException: "Недостаточно памяти."

Отсюда вопрос, почему так происходит? Прямоугольник точно в изображении находится, то есть за рамки не выходит. С ресурсами железа тоже вроде все хорошо.


Ответы (1 шт):

Автор решения: default locale

В конструкторе Rectangle:

public Rectangle (int x, int y, int width, int height);

Третий и четвертый аргументы это не координаты правого нижнего угла, а ширина и высота прямоугольника.

Предполагаю, что в первом случае прямоугольник выходит за рамки исходного изображения.

→ Ссылка