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 шт):
В конструкторе Rectangle:
public Rectangle (int x, int y, int width, int height);
Третий и четвертый аргументы это не координаты правого нижнего угла, а ширина и высота прямоугольника.
Предполагаю, что в первом случае прямоугольник выходит за рамки исходного изображения.