【问题标题】:Vb.net picturebox zoomingvb.net图片框缩放
【发布时间】:2013-07-14 01:07:38
【问题描述】:

我正在尝试在一定程度上复制 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

【问题讨论】:

  • 你研究了什么?你试过什么代码?我们不为人们开发软件。
  • 好吧,我在这个特别的东西上什么都没有发现,除了这个:vbforums.com/… 不幸的是,我无法完全理解这件事发生了什么,无法完全适应它。我知道你们不知道,而且非常不应该只是分发代码。我只问这个问题是因为我的研究缺乏结果,而且我的代码被破坏了。我已经编写并重写了一段应该可以运行几次的代码,而现在我只能展示它的部分。

标签: vb.net mouse picturebox zooming


【解决方案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

【讨论】:

  • 让我澄清一下,我已经让缩放工作和向下工作,就像它应该起作用一样。但是,我想要做的是放大鼠标在表单上的位置,就像 Windows 照片查看器一样。我已经尝试了很长一段时间,但没有运气,我不只是开始这样做。我请求帮助继续它以使其正常工作,而不是启动它。
  • 那你应该提出更好的问题。更好的问题给出更好的答案。如果您不明确您想要什么,我们很难帮助您解决具体问题。无论如何,您可以根据鼠标位置调整Picturebox的大小,例如,如果光标在图像的右侧位置,则将图像向左调整。
  • 我意识到这一点,我重新制作了 OP 以使其更清晰。你说的关于调整鼠标位置对面的图片框的大小,我知道。我只是不知道如何正确处理。
  • 您找到解决方案了吗?我也在寻找同样的东西。
猜你喜欢
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
相关资源
最近更新 更多