我正在尝试在一定程度上复制 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-图片控制与鼠标居中缩放