DOBON.NET

画像の一部を切り取って(トリミングして)表示する

注意:画像の表示方法が分からないという方は、まず「コントロールやフォームに画像を表示する」をご覧ください。

画像の一部を切り取って表示(トリミング)するには、Graphics.DrawImageメソッドに画像を描画する範囲と、切り取る範囲、そして使用する単位を指定します。ただしこの方法で切り取れるのは、矩形(四角)の範囲です。それ以外の形で切り取りたい場合は、「クリッピング領域を指定して画像の一部を表示する」をご覧ください。

なおGraphics.DrawImageメソッドについては、「画像(Imageオブジェクト)を描画する」をご覧ください。

次の例では、画像ファイル(C:\test\1.jpg)の 位置 (10, 10)、大きさ 100x100 の範囲を、ピクチャボックス(PictureBox1)の位置 (0, 0) に 100x100 の大きさで表示しています。単位は、ピクセル単位です。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'画像の一部を切り取って(トリミングして)表示する

'描画先とするImageオブジェクトを作成する
Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height)
'ImageオブジェクトのGraphicsオブジェクトを作成する
Dim g As Graphics = Graphics.FromImage(canvas)

'画像ファイルのImageオブジェクトを作成する
Dim img As New Bitmap("C:\test\1.jpg")

'切り取る部分の範囲を決定する。ここでは、位置(10,10)、大きさ100x100
Dim srcRect As New Rectangle(10, 10, 100, 100)
'描画する部分の範囲を決定する。ここでは、位置(0,0)、大きさ100x100で描画する
Dim desRect As New Rectangle(0, 0, srcRect.Width, srcRect.Height)
'画像の一部を描画する
g.DrawImage(img, desRect, srcRect, GraphicsUnit.Pixel)

'Graphicsオブジェクトのリソースを解放する
g.Dispose()

'PictureBox1に表示する
PictureBox1.Image = canvas
C#
コードを隠すコードを選択
//using System.Drawing;

//画像の一部を切り取って(トリミングして)表示する

//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//画像ファイルのImageオブジェクトを作成する
Bitmap img = new Bitmap(@"C:\test\1.jpg");

//切り取る部分の範囲を決定する。ここでは、位置(10,10)、大きさ100x100
Rectangle srcRect = new Rectangle(10, 10, 100, 100);
//描画する部分の範囲を決定する。ここでは、位置(0,0)、大きさ100x100で描画する
Rectangle desRect = new Rectangle(0, 0, srcRect.Width, srcRect.Height);
//画像の一部を描画する
g.DrawImage(img, desRect, srcRect, GraphicsUnit.Pixel);

//Graphicsオブジェクトのリソースを解放する
g.Dispose();

//PictureBox1に表示する
PictureBox1.Image = canvas;

もし切り取る部分と描画する部分の大きさが違った場合は、描画する部分の大きさに合わせて画像が拡大、あるいは縮小されて表示されます。

描画する部分の大きさを指定しなかった場合は、自動スケーリングが行われる可能性があります。自動スケーリングについては「クリッピング領域を指定して画像の一部を表示する」で説明しています。

  • 履歴:
  • 2012/8/1 描画する部分の大きさを指定して表示するコードに変更。表示する方法を、PictureBox.Imageプロパティを使った方法に変更。
  • 2013/12/2 記事内で、範囲を表す書き方が適切でなかったのを修正。
  • 2016/9/4 描画位置のコメントが間違えていたのを修正。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。