Delen via


Afbeeldingen bijsnijden en schalen in GDI+

U kunt de DrawImage methode van de Graphics klasse gebruiken om vectorafbeeldingen en rasterafbeeldingen te tekenen en te positioneren. DrawImage is een overbelaste methode, dus er zijn verschillende manieren waarop u deze kunt opgeven met argumenten.

DrawImage-varianten

Een variatie van de methode DrawImage ontvangt een Bitmap en een Rectangle. De rechthoek geeft de bestemming voor de tekenbewerking op; Dat wil gezegd, hiermee wordt de rechthoek opgegeven waarin de afbeelding moet worden getekend. Als de grootte van de doelrechthoek verschilt van de grootte van de oorspronkelijke afbeelding, wordt de afbeelding geschaald zodat deze past bij de doelrechthoek. In het volgende codevoorbeeld ziet u hoe u dezelfde afbeelding drie keer tekent: eenmaal zonder schaalaanpassing, eenmaal met een uitbreiding en één keer met een compressie:

Bitmap myBitmap = new Bitmap("Spiral.png");

Rectangle expansionRectangle = new Rectangle(135, 10,
   myBitmap.Width, myBitmap.Height);

Rectangle compressionRectangle = new Rectangle(300, 10,
   myBitmap.Width / 2, myBitmap.Height / 2);

myGraphics.DrawImage(myBitmap, 10, 10);
myGraphics.DrawImage(myBitmap, expansionRectangle);
myGraphics.DrawImage(myBitmap, compressionRectangle);
Dim myBitmap As New Bitmap("Spiral.png")

Dim expansionRectangle As New Rectangle(135, 10, _
   myBitmap.Width, myBitmap.Height)

Dim compressionRectangle As New Rectangle(300, 10, _
   CType(myBitmap.Width / 2, Integer), CType(myBitmap.Height / 2, Integer))

myGraphics.DrawImage(myBitmap, 10, 10)
myGraphics.DrawImage(myBitmap, expansionRectangle)
myGraphics.DrawImage(myBitmap, compressionRectangle)

In de volgende afbeelding ziet u de drie afbeeldingen.

schalen

Sommige variaties van de methode DrawImage hebben een parameter voor de bronrechthoek en een parameter voor de doelrechthoek. De parameter bronrechthoek geeft het gedeelte van de oorspronkelijke afbeelding op dat moet worden getekend. De doelrechthoek geeft de rechthoek op waarin dat gedeelte van de afbeelding moet worden getekend. Als de grootte van de doelrechthoek verschilt van de grootte van de bronrechthoek, wordt de afbeelding geschaald zodat deze past bij de doelrechthoek.

In het volgende codevoorbeeld ziet u hoe u een Bitmap maakt op basis van het bestand Runner.jpg. De volledige afbeelding wordt zonder schaalverandering getekend op (0, 0). Vervolgens wordt een klein deel van de afbeelding twee keer getekend: eenmaal met een compressie en eenmaal met een uitbreiding.

Bitmap myBitmap = new Bitmap("Runner.jpg");

// One hand of the runner
Rectangle sourceRectangle = new Rectangle(80, 70, 80, 45);

// Compressed hand
Rectangle destRectangle1 = new Rectangle(200, 10, 20, 16);

// Expanded hand
Rectangle destRectangle2 = new Rectangle(200, 40, 200, 160);

// Draw the original image at (0, 0).
myGraphics.DrawImage(myBitmap, 0, 0);

// Draw the compressed hand.
myGraphics.DrawImage(
   myBitmap, destRectangle1, sourceRectangle, GraphicsUnit.Pixel);

// Draw the expanded hand.
myGraphics.DrawImage(
   myBitmap, destRectangle2, sourceRectangle, GraphicsUnit.Pixel);
Dim myBitmap As New Bitmap("Runner.jpg")

' One hand of the runner
Dim sourceRectangle As New Rectangle(80, 70, 80, 45)

' Compressed hand
Dim destRectangle1 As New Rectangle(200, 10, 20, 16)

' Expanded hand
Dim destRectangle2 As New Rectangle(200, 40, 200, 160)

' Draw the original image at (0, 0).
myGraphics.DrawImage(myBitmap, 0, 0)

' Draw the compressed hand.
myGraphics.DrawImage( _
   myBitmap, destRectangle1, sourceRectangle, GraphicsUnit.Pixel)

' Draw the expanded hand. 
myGraphics.DrawImage( _
   myBitmap, destRectangle2, sourceRectangle, GraphicsUnit.Pixel)

In de volgende afbeelding ziet u de niet-geschaalde afbeelding en de gecomprimeerde en uitgevouwen afbeeldingsgedeelten.

bijsnijden en schalen

Zie ook