缩放至视口中心

发布于 2024-08-09 14:34:12 字数 308 浏览 2 评论 0原文

我目前正在尝试编写一个可缩放的 UserControl 并且我已经 目前正在效仿鲍威尔的榜样 在 https://web.archive.org/web /20141229192708/http://bobpowell.net/zoompicbox.aspx,但是,我正在尝试 实现的是缩放到控件的中心点,而不是 左上角。

有人对此有经验/想法吗?

I'm currently trying to write a zoomable UserControl and I've
currently followed Bob Powell's example
at https://web.archive.org/web/20141229192708/http://bobpowell.net/zoompicbox.aspx, however, what I'm trying to
achieve is zooming to the center point of the control, not
the top left corner.

Is anybody having experience/idea on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小嗲 2024-08-16 14:34:12

您需要将控件的值向中心偏移,应用缩放变换,然后向后偏移。

尝试以下算法来计算新的左上角:

(-old_centre * factor) + old_centre

如果控件为 100,100,则将产生缩放系数 2:

((-50, -50) * 2) + (50, 50) = (-100, -100) + (50, 50) = (-50, -50)

缩放系数为 0.5:

((-50, -50) * 0.5) + (50, 50) = (-25, -25) + (50, 50) = (25, 25)

You need to offset the values of the control by the centre, apply the scale transform and then offset back.

Try the following algorithm to calculate the new top left:

(-old_centre * factor) + old_centre

If the control is 100,100 a zoom factor of 2 will produce:

((-50, -50) * 2) + (50, 50) = (-100, -100) + (50, 50) = (-50, -50)

With a zoom factor of 0.5:

((-50, -50) * 0.5) + (50, 50) = (-25, -25) + (50, 50) = (25, 25)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文