方法 : イメージをトリミングおよびスケーリングする

更新 : 2007 年 11 月

Graphics クラスでは、DrawImage メソッドがいくつか用意されています。その中には、描画元の範囲を表す四角形パラメータや、描画先の範囲を表す四角形パラメータを受け取るメソッドもあり、これらはイメージをトリミングおよびスケーリングするために使用できます。

使用例

ディスク ファイル Apple.gif から Image オブジェクトを作成する例を次に示します。このコードは、リンゴのイメージ全体を元のサイズで描画します。次に、Graphics オブジェクトの DrawImage メソッドを呼び出して、リンゴのイメージの一部を、元のリンゴのイメージよりも大きな描画先の四角形に描画します。

DrawImage メソッドは、3 番目、4 番目、5 番目、6 番目の各引数によって指定されている、描画元の範囲を表す四角形を参照し、リンゴのどの部分を描画するかを決定します。この場合は、リンゴの幅と高さがそれぞれの 75% になるようにトリミングされます。

DrawImage メソッドは、2 番目の引数によって指定されている、描画先の範囲を表す四角形を参照して、トリミングしたリンゴのイメージの描画位置と、そのイメージをどれくらいの大きさで描画するかを決定します。この例では、描画先の範囲を表す四角形は、元のイメージよりも幅、高さ共に 30% 大きく指定されています。

元のリンゴと、スケーリングおよびトリミングしたリンゴを次の図に示します。

トリミング & スケール

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)

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

コードのコンパイル方法

前述の例は Windows フォームと一緒に使用することが想定されていて、Paint イベント ハンドラのパラメータである PaintEventArgs e が必要です。Apple.gif は、必ずシステム上で有効なイメージ ファイルの名前とパスに置き換えてください。

参照

その他の技術情報

イメージ、ビットマップ、およびメタファイル

イメージ、ビットマップ、アイコン、およびメタファイルの操作