Обрезка и масштабирование изображений GDI+
Класс Graphics предоставляет несколько методов DrawImage , некоторые из которых имеют параметры прямоугольника источника и назначения, которые можно использовать для обрезки и масштабирования изображений.
В следующем примере создается объект Image из файла Apple.gif. Код рисует все изображение яблока в исходном размере. Затем код вызывает метод DrawImage объекта Graphics для рисования части изображения apple в целевом прямоугольнике, который больше, чем исходное изображение apple.
Метод DrawImage определяет, какую часть яблока нужно нарисовать, просматривая исходный прямоугольник, который задается третьим, четвертым, пятым и шестым аргументами. В этом случае яблоко обрезается до 75 процентов по ширине и 75 процентов по высоте.
Метод DrawImage определяет место рисования обрезанного яблока и размер обрезанного яблока, просматривая прямоугольник назначения, который задается вторым аргументом. В этом случае прямоугольник назначения будет на 30 процентов шире и 30 процентов выше, чем исходное изображение.
Image image(L"Apple.gif");
UINT width = image.GetWidth();
UINT height = image.GetHeight();
// Make the destination rectangle 30 percent wider and
// 30 percent taller than the original image.
// Put the upper-left corner of the destination
// rectangle at (150, 20).
Rect destinationRect(150, 20, 1.3 * width, 1.3 * height);
// Draw the image unaltered with its upper-left corner at (0, 0).
graphics.DrawImage(&image, 0, 0);
// Draw a portion of the image. Scale that portion of the image
// so that it fills the destination rectangle.
graphics.DrawImage(
&image,
destinationRect,
0, 0, // upper-left corner of source rectangle
0.75 * width, // width of source rectangle
0.75 * height, // height of source rectangle
UnitPixel);
На следующем рисунке показано исходное изображение яблока и масштабируемое, обрезанные изображение.