注意:画像の表示方法が分からないという方は、まず「コントロールやフォームに画像を表示する」をご覧ください。
ImageクラスのRotateFlipメソッドを使用することにより、画像の回転、反転を行うことが出来ます。RotateFlipメソッドでは、回転は90度、180度、270度を、反転は水平方向、垂直方向、その両方を指定できます。
以下の例では、画像(test.bmp)を180度回転、水平方向に反転して、ピクチャボックス(PictureBox1)に表示しています。
'Imports System.Drawing Dim bmp As Bitmap = New Bitmap("test.bmp") '180度回転して、水平方向に反転 '"Rotate180FlipX"の"Rotate180"は180度回転することを意味し、 '"FlipX"は水平方向に反転することを意味する bmp.RotateFlip(RotateFlipType.Rotate180FlipX) '表示 PictureBox1.Image = bmp
//using System.Drawing; Bitmap bmp = new Bitmap("test.bmp"); //180度回転して、水平方向に反転 //"Rotate180FlipX"の"Rotate180"は180度回転することを意味し、 //"FlipX"は水平方向に反転することを意味する bmp.RotateFlip(RotateFlipType.Rotate180FlipX); //表示 PictureBox1.Image = bmp;
また、画像を描画するときに反転させるには、Graphics.DrawImageメソッドで描画先(または元のイメージ)の領域の指定で、幅または高さの値をマイナスにするという方法もあります。幅をマイナスにすると水平方向に、高さをマイナスにすると垂直方向に反転します。
この時、描画先(または元のイメージ)の位置に注意する必要があります。つまり例えば幅の値をマイナスにしたときは、その分描画位置をX座標方向にプラスしなければ正常な位置に描画されません。
次の例は画像を水平方向に反転させていますが、幅を"-img.Width"としているため、この画像を(0, 0)の位置に描画するためには、描画先の位置を(img.Width, 0)とする必要があります。
'Imports System.Drawing '描画先とするImageオブジェクトを作成する Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height) 'ImageオブジェクトのGraphicsオブジェクトを作成する Dim g As Graphics = Graphics.FromImage(canvas) '画像を読み込む Dim img As Image = Image.FromFile("test.bmp") '画像を水平方向に反転して描画する '座標(0, 0)に描画するために、描画位置のX座標をimg.Widthにしている g.DrawImage(img, img.Width, 0, -img.Width, img.Height) 'Graphicsオブジェクトのリソースを解放する g.Dispose() 'PictureBox1に表示する PictureBox1.Image = canvas
//using System.Drawing; //描画先とするImageオブジェクトを作成する Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height); //ImageオブジェクトのGraphicsオブジェクトを作成する Graphics g = Graphics.FromImage(canvas); //画像を読み込む Image img = Image.FromFile("test.bmp"); //画像を水平方向に反転して描画する //座標(0, 0)に描画するために、描画位置のX座標をimg.Widthにしている g.DrawImage(img, img.Width, 0, -img.Width, img.Height); //Graphicsオブジェクトのリソースを解放する g.Dispose(); //PictureBox1に表示する PictureBox1.Image = canvas;
より複雑な回転、反転は、「画像を傾けて表示する」や「ワールド変換により画像を平行移動、拡大、縮小、回転して表示する」の方法により可能です。