• ベストアンサー

(VB.net)画像の一部を切り取って,拡大・縮小したい

内容を見ていただき,ありがとうございます。 タイトルのままですが,PictureBoxに画像を出して,その一部を切り取ったうえで拡大・縮小させるプログラムを作成しています。 今のところ,画像の一部を切り出すことはできたのですが,これを拡大・縮小させる方法をご存じないでしょうか。画像の一部を切り出すソースは以下のとおりです。 まず,フォームにピクチャボックス(PictureBox1)とコマンドボタン(Button1)を配置し,ソリューションを置いているフォルダ内のbinフォルダにWinter.jpg(WinXPのマイピクチャに入っているものです)を入れておきます。次に,Button1のコードとして,以下のものを打ち込みました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Bitmapオブジェクトの作成(切り取り元画像の指定) Dim bmap = New Bitmap("winter.jpg") '切り取る範囲をRectanleで指定 Dim rect As New Rectangle(10, 20, 100, 200) 'PictureBox1のGraphicsオブジェクトの作成 Dim g As Graphics = PictureBox1.CreateGraphics() '元の画像の指定部分を切り取ってPictureboxの左上隅(x,y = 0,0)に表示する.単位はピクセル. g.DrawImage(bmap, 0, 0, rect, GraphicsUnit.Pixel) 'Graphicsオブジェクトを破棄 g.Dispose() End Sub 以上です。 おそらく,DrawImageの部分を変えればいけるのではないかと思われるのですが,いかがでしょうか。ご助言よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

rectSrc で切り取る範囲を指定します rectDst で貼り付け先(サイズ)を指定します SrcとDstの幅/高さの違いの分だけ、画像の拡大縮小が行われます 'Bitmapオブジェクトの作成(切り取り元画像の指定) Dim bmap = New Bitmap(DEF_BMP) Dim img As System.Drawing.Image '切り取り範囲を指定 Dim rectSrc As New RectangleF(bmap.Width / 4 * 3, bmap.Height / 4 * 3, bmap.Width / 4, bmap.Height / 4) '貼り付け先を指定 Dim rectDst As New RectangleF(0, 0, bmap.Width / 2, bmap.Height / 2) 'PictureBox1のGraphicsオブジェクトの作成 Dim g As Graphics = PictureBox1.CreateGraphics() '表示 g.DrawImage(bmap, rectDst, rectSrc, GraphicsUnit.Pixel) 'オブジェクトの破棄 bmap.Dispose() g.Dispose()

Caryo_t
質問者

お礼

ご教示いただいた方法でうまくいきました。ありがとうございました。 お礼を送ったつもりで失念していました。 そのため,御礼が遅れてしまい,申し訳ありませんでした。

その他の回答 (1)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

切り取った画像を一旦BMPの中に取り込んでそれを表示。

Caryo_t
質問者

お礼

御礼が遅れてすみません。No2の方の方法でうまくいきました。ありがとうございました。