Recorte y escalado de imágenes de GDI+

La clase Graphics proporciona varios métodos DrawImage , algunos de los cuales tienen parámetros de rectángulo de origen y destino que puede usar para recortar y escalar imágenes.

En el ejemplo siguiente se construye un objeto Image a partir del archivo Apple.gif. El código dibuja la imagen completa de la manzana en su tamaño original. A continuación, el código llama al método DrawImage de un objeto Graphics para dibujar una parte de la imagen de apple en un rectángulo de destino mayor que la imagen de apple original.

El método DrawImage determina qué parte de la manzana se va a dibujar examinando el rectángulo de origen, que se especifica mediante los argumentos tercero, cuarto, quinto y sexto. En este caso, la manzana se recorta al 75 por ciento de su ancho y el 75 por ciento de su alto.

El método DrawImage determina dónde dibujar la manzana recortada y el tamaño de la manzana recortada examinando el rectángulo de destino, especificado por el segundo argumento. En este caso, el rectángulo de destino es un 30 por ciento más ancho y un 30 por ciento más alto que la imagen original.

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);

En la imagen siguiente se muestra la manzana original y la manzana recortada y escalada.

ilustración que muestra una manzana y, a continuación, una parte ampliada de la manzana original