分類:[VB.NET/VB2005 以降]
2012/11/21(Wed) 21:04:43 編集(投稿者)
vb2010です。
PanelにPictureBoxを入れて、
パネルのマウスホイールイベントでピクチャーボックスの拡大縮小しようと思っています。
パネルのポイントした位置をピクチャーボックスに連動させ、
画像のポイント位置を固定した状態で画像サイズを拡大縮小したいのですが、
以下のコードでは、マウスホイールの回転1回目のみ位置がずれてしまいます。
どこが間違っているのでしょうか?
よろしくお願いいたします。
Public Class Form1
Dim MyWide As Single
Dim MyHeight As Single
Dim MyLeft As Single
Dim MyTop As Single
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
With PictureBox1
.SizeMode = PictureBoxSizeMode.Zoom
.Image = Image.FromFile(ファイルパス)
MyWide = .Width
MyHeight = .Height
.Left = Panel1.Width / 2 - .Width / 2
.Top = Panel1.Height / 2 - .Height / 2
MyLeft = .Left
MyTop = .Top
End With
End Sub
Private Sub Panel1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseWheel
Dim RateX As Single
Dim RateY As Single
Dim 倍率 As Single
RateX = e.X / Panel1.Width
RateY = e.Y / Panel1.Height
If e.Delta > 0 Then
倍率 = 1.1
Else
倍率 = 0.9
End If
With PictureBox1
MyWide = MyWide * 倍率
MyHeight = MyHeight * 倍率
.Width = MyWide
.Height = MyHeight
MyLeft = e.X - .Width * RateX
MyTop = e.Y - .Height * RateY
.Left = MyLeft
.Top = MyTop
End With
End Sub
End Class