Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
画像を加工処理する機能について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9414#CommentId13709
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
hori
 (社会人)
投稿日時
2009/12/3 18:10:09
るきおさんにおしえてもらったのを若干手を加えたのですが、(といってもほとんどおなじかもしれません)どうしても理解できない部分があるのでご教授願います。
画像を読み込んで、その画像を拡大、縮小、及び移動はできますが、画像を最大に拡大してしまった
ときに、マウスの形状が変化しなくなってしまいます。
また、他の画像を読み込んだときに、それ以前に読み込まれていた画像と同じサイズになってしまいます
(これは初期化が必要なのだと思いますが、)
Private IsSizable As Boolean 'サイズ変更可能状態か?
Private IsSizing As Boolean 'サイズ変更中か?
Dim sx As Integer, sy As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OpenFileDialog1.Filter = "jpeg(*.jpg,*.jpg)|*.jpg;*.jpg|" + " ビットマップ(*.bmp)|*.bmp"
Dim fname As String = ""
OpenFileDialog1.Filter = "jpeg(*.jpg,*.jpg)|*.jpg;*.jpg|" + " ビットマップ(*.bmp)|*.bmp"
'ファイルを開くダイアログボックス
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
'ファイル名を取得
fname = OpenFileDialog1.FileName
'読み込み
PictureBox1.Image = Image.FromFile(fname)
End If
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
sx = e.X
sy = e.Y
'サイズ変更可能状態でマウスを押下した場合、サイズ変更中にする。
If IsSizable Then
IsSizing = True
End If
End Sub
Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
'マウスがPictureBox外に出たときはカーソルを通常にして、フラグをすべてリセットする。
Me.Cursor = Cursors.Default
IsSizable = False
IsSizing = False
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If IsSizing Then
'サイズ変更中ならサイズを変更する
PictureBox1.Width = e.X
Else
'サイズ変更中でないならサイズ変更可能状態か判断しマウスの形状を変更する。
ArrowMouse(sender, e.X, e.Y)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim mx As Integer = PictureBox1.Left + e.X - sx
Dim my As Integer = PictureBox1.Top + e.Y - sy
PictureBox1.Location = New Point(mx, my)
End If
End If
End Sub
''' <summary>
''' サイズ変更可能状態か判断し、必要に応じてマウスの形状を変更する。
''' MouseLeaveイベントでもマウスの状態を変更しているのに留意のこと。
''' </summary>
Private Sub ArrowMouse(ByVal cnt As Control, ByVal x As Integer, ByVal y As Integer)
If x >= (cnt.Width - 5) Then
'コントロールの右端から内側に5ピクセル内にマウスがあるときサイズ変更可能
Me.Cursor = Cursors.SizeNWSE
IsSizable = True
Else
'それ以外のときサイズ変更不可。
Me.Cursor = Cursors.Default
IsSizable = False
End If
End Sub