画像のトリミング後のサイズ
- 題名: 画像のトリミング後のサイズ
- 著者: よしお
- 日時: 2008/09/07 13:04:10
- ID: 22942
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 画像のトリミング後のサイズ
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2008/09/08 2:13:20
- ID: 22949
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 画像のトリミング後のサイズ
- 著者: よしお
- 日時: 2008/09/08 22:11:35
- ID: 22966
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
【解決したい問題】
画像を指定された範囲でトリミングして、その結果を取得する関数を作っているのですが、PictureBoxのImageプロパティに代入して表示してみるとどうも指定した範囲の大きさより小さいみたいです。
Microsoft Visual Basic 2008 Express Edition を使用しています。
Public Function GetSelectedImage(ByVal image As Image, ByVal rectangle As Rectangle) As Image
'
' ▼引数の値が不当でないか確認する
'
' rectangleの引数がPoint.Emptyの場合は例外をスローする。
If rectangle = System.Drawing.Rectangle.Empty Then
Throw New ArgumentException _
("引数にRectangle.Emptyは指定できません。", "rectangle")
End If
' imageの引数がNothingの場合は例外をスローする。
If image Is Nothing Then
Throw New ArgumentException _
("引数にNothingは指定できません。", "image")
End If
' rectangleがイメージの領域外を表しているときに例外をスローする。
If image.Width < rectangle.Right OrElse image.Height < rectangle.Bottom Then
Throw New ArgumentException("指定された領域が正しくありません。イメージ内の領域を指定してください。", "rectangle")
End If
Dim g As Graphics = Nothing
Try
Dim img As New Bitmap(rectangle.Width, rectangle.Height)
g = Graphics.FromImage(img)
g.DrawImage(image, 0, 0, rectangle, GraphicsUnit.Pixel)
Return img
Finally
If g IsNot Nothing Then g.Dispose()
End Try
End Function
フォーム上にName=PictureBox1,SizeMode=AutSizeというPicturBoxがあるとして
Me.PictureBox1.Image = Me.GetSelectedImage(New Bitmap("C:\sample.jpg"), New Rectangle(0, 0, 100, 100))
というコードを実行すると、確かにPictureBoxのサイズは(100,100)になりましたが、表示されている画像は半分強しかありません。
どなたか教えてください。
【解決するために何をしたか】
ビットマップ形式のファイルで実行したところ、指定したサイズで描写されました。
Jpeg形式のほかのファイルで実行してもやはり小さくなります。
DrawImageの引数を変更しても同様の結果になります。