Condividi tramite


Procedura: ritagliare e adattare immagini

La Graphics classe fornisce diversi DrawImage metodi, alcuni dei quali hanno parametri del rettangolo di origine e di destinazione che è possibile usare per ritagliare e ridimensionare le immagini.

Esempio

Nell'esempio seguente viene creato un Image oggetto dal file del disco Apple.gif. Il codice disegna l'intera immagine apple nella dimensione originale. Il codice chiama quindi il DrawImage metodo di un Graphics oggetto per disegnare una parte dell'immagine apple in un rettangolo di destinazione più grande dell'immagine apple originale.

Il DrawImage metodo determina quale parte della mela di disegnare esaminando il rettangolo di origine, specificato dal terzo, quarto, quinto e sesto argomento. In questo caso, la mela viene ritagliata al 75% della larghezza e al 75% dell'altezza.

Il DrawImage metodo determina dove disegnare la mela ritagliata e quanto grande per fare in modo che la mela ritagliata esamini il rettangolo di destinazione, specificato dal secondo argomento. In questo caso, il rettangolo di destinazione è più ampio del 30% e il 30% più alto rispetto all'immagine originale.

La figura seguente mostra la mela originale e la mela ridimensionata, ritagliata.

Screenshot di un'immagine originale e della stessa immagine ritagliata.

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)

Compilazione del codice

L'esempio precedente è progettato per l'uso con Windows Form e richiede PaintEventArgse, che è un parametro del gestore eventi Paint. Assicurarsi di sostituire Apple.gif con un nome di file di immagine e un percorso validi nel sistema.

Vedere anche