|
分類:[.NET 全般]
C-Builderで作成したプログラムをVB.netに書き換えて居ます。
C-Builderで StretchBit関数で拡大縮小をやっていましたが、VB.netでStretchBitの所を見ても良く分からなかったので、例題サイトで拡大縮小を見つけてやってみました。
私がやりたいのはソース画像の一部の指定画像領域をPictureBoxに縦横比率は変わって構わないのですが、内容を全て表示すると言うものです。
やっと下のプログラムの様にした所、開始点からの画像をPictureBoxに表示する事が出来ましたが、縦横サイズが切り取り指定に指示した画素サイズでコピーされて居る様で、右、及び下の画像がカットされてしまい、かつ、画像自体は拡大されてしまって居る様です。 多分、DrawImage(img, desRect, srcRect, GraphicsUnit.Pixel)の第四パラメーターを替えれば私の思っている動作が出来ると思うのですが、MSDNを読んでも良く分かりません。
何方かお分かりに成る方、宜しくお教え下さい。 若しくはVB.NetでStretchBitのサンプルプログラムの載っているサイトありましたらご紹介下さい。 C-BuilderではポインターでStretchBitの一部を変更して使用して居たのですが、VB.netではポインターの概念が無いらしいと言う事を読み、やり方が分からずに困って居ります。
宜しくお願い致します。
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click 'Imports System.Drawing
Me.pbxCamScr(1).BackgroundImageLayout = ImageLayout.Stretch
' Me.PictureBox1.BackgroundImageLayout = ImageLayout.Stretch ' pbxCamScr(1).BackgroundImage = canvas
'画像の一部を切り取って(トリミングして)表示する
'描画先とするImageオブジェクトを作成する Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height) 'ImageオブジェクトのGraphicsオブジェクトを作成する Dim g As Graphics = Graphics.FromImage(canvas)
'画像ファイルのImageオブジェクトを作成する sWrk = String.Format("{0}", 0) Mid(sTestFilePath, 5, 1) = sWrk Dim img As New Bitmap(sCurDir + sTestFilePath) '例題のでは無く、独自のファイルで作成 ' Dim img As New Bitmap("C:\test\1.jpg")
'切り取る部分の範囲を決定する。ここでは、(0,0)-(100,100) Dim srcRect As New Rectangle(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text) '切り取り位置を変更出来る様にして居る '描画する部分の範囲を決定する。ここでは、(0, 0)の位置に描画する Dim desRect As New Rectangle(0, 0, srcRect.Width, srcRect.Height) '画像の一部を描画する ' g.DrawImage(img, desRect, srcRect, GraphicsUnit.Pixel) g.DrawImage(img, desRect, srcRect, GraphicsUnit.Pixel) 'このGraphicsUnit.Pixelを他の物に替えれば良いのか? 'Graphicsオブジェクトのリソースを解放する g.Dispose()
'PictureBox1に表示する PictureBox1.Image = canvas
End Sub
|