Vb.net图片框缩放

时间:2013-07-16 01:29:04

标签: vb.net mouse picturebox zooming

我试图在某种程度上复制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)

这几乎完全符合我的要求(如果您在运行此表单时点击“Open Zoomable Image”,但我无法准确理解它是如何工作的:http://www.vbforums.com/showthread.php?654846-ZoomPictureBox-picture-control-with-mouse-centred-zooming

1 个答案:

答案 0 :(得分:1)

您可以按照自己的方式调整包含图像的PictureBox的大小。将SizeMode设置为Zoom,以便图像自动重新调整其大小:

PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom

然后根据需要调整PictureBox的大小。

您可以通过在表单上添加事件MouseMove并将位置存储在变量中来检测表单中的鼠标位置。或者您随时可以在屏幕上显示鼠标位置:

Dim p As Point = Me.PointToClient(Cursor.Position)

您可以在此处阅读类似的问题:How to zoom in a Picturebox with scrollwheel in vb.net