Procedimiento para recortar y ajustar la escala de las imágenes

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

Ejemplo

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

El método DrawImage determina qué parte de la manzana se va a dibujar examinando el rectángulo de origen, que especifican 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, que especifica el argumento segundo. 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.

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

Captura de pantalla de una imagen original y la misma imagen recortada.

Image image = new Bitmap("Apple.gif");

// Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0);

// 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).
int width = image.Width;
int height = image.Height;
RectangleF destinationRect = new RectangleF(
    150,
    20,
    1.3f * width,
    1.3f * height);

// Draw a portion of the image. Scale that portion of the image
// so that it fills the destination rectangle.
RectangleF sourceRect = new RectangleF(0, 0, .75f * width, .75f * height);
e.Graphics.DrawImage(
    image,
    destinationRect,
    sourceRect,
    GraphicsUnit.Pixel);
Dim image As New Bitmap("Apple.gif")

' Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0)

' 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).
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim destinationRect As New RectangleF( _
    150, _
    20, _
    1.3F * width, _
    1.3F * height)

' Draw a portion of the image. Scale that portion of the image
' so that it fills the destination rectangle.
Dim sourceRect As New RectangleF(0, 0, 0.75F * width, 0.75F * height)
e.Graphics.DrawImage( _
    image, _
    destinationRect, _
    sourceRect, _
    GraphicsUnit.Pixel)

Compilar el código

El ejemplo anterior está diseñado para su uso con Windows Forms y requiere PaintEventArgse, que es un parámetro del controlador de eventos Paint. Asegúrese de reemplazar Apple.gif por un nombre de archivo de imagen y una ruta de acceso válidos en el sistema.

Consulte también