3

Windowsフォトビューアをある程度複製しようとしています。

現在、ピクチャボックスを備えたフォームがあり、マウスで移動したり、スクロールホイールでズームイン/ズームアウトしたりできます。

ただし、マウスポインターに向かってズームしたいと思います。Windows フォト ビューアーでかなり大きな画像を開き、マウスで画像の中心から離れた場所をズームすると、私が説明しようとしていることがわかります。それを再現したいのですが、今のところズームインとズームアウトしかできません。

マウスポインターの反対方向に画像をフォームの中心に移動し、マウスがフォームの中心からどれだけ離れているかに応じて、スクロールホイールの目盛りごとに移動する量を変える必要があることはわかっていますが、これは私が立ち往生しているところです。

これは、半分がコメントアウトされていて、機能していない状態と完全に機能していない状態の中間にある、笑える混乱したコードです。

    Dim Me_Center As Point = New Point(Me.Width / 2, Me.Height / 2)
    Dim PB_Center_R As Point = New Point(PictureBox1.Width / 2, PictureBox1.Height / 2)
    Dim PB_Center As Point = New Point(PictureBox1.Location.X + PB_Center_R.X, PictureBox1.Location.Y + PB_Center_R.Y)
    Dim PB_Diff As Point = (PB_Center - MousePos)


    PictureBox1.Location = New Point((Me_Center - PB_Center_R) - PB_Diff)

    'PictureBox1.Location = New Point((Me.Width / 2) - (PictureBox1.Width / 2), (Me.Height / 2) - (PictureBox1.Height / 2))

    '(Me.Width / 2) - (PictureBox1.Width + Pos.X / 2), (Me.Height / 2) - (PictureBox1.Height - Pos.Y / 2)
    'PictureBox1.Location = New Point((Me.Width / 2 - (PictureBox1.Width / 2)) + XP, (Me.Height / 2 - (PictureBox1.Height / 2)) - YP)

これは私が望んでいることとほとんど同じです(このフォームを実行するときに「ズーム可能な画像を開く」をクリックしても、それがどのように機能するか正確にはわかりません:http://www.vbforums.com/showthread.php?654846- ZoomPictureBox-picture-control-with-mouse-centred-zooming

4

1 に答える 1