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 de destino que se pueden utilizar para recortar y ajustar la escala de las imágenes.
En el ejemplo siguiente se construye un objeto Image a partir del archivo de disco Apple.gif. Con este código se dibuja toda la imagen de la manzana con 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 la manzana en un rectángulo de destino de mayor tamaño que la imagen original.
El método DrawImage determina qué parte de la manzana se va a dibujar observando el rectángulo de origen, especificado por los argumentos tercero, cuarto, quinto y sexto. En este caso, la manzana se recorta a un 75 por ciento de su ancho y un 75 por ciento de su alto.
El método DrawImage determina dónde se va a dibujar la manzana recortada y con qué tamaño observando 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.
Dim 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).
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)
[C#]
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);
En la imagen siguiente se muestran la manzana original y la manzana recortada con escala ajustada.