gpt4 book ai didi

Java - 围绕特定点缩放 Canvas

转载 作者:行者123 更新时间:2023-12-01 23:36:43 25 4
gpt4 key购买 nike

我或多或少完成了一个使用牛顿物理学的非常简单的行星重力模拟器。它可以变换和缩放行星以进行平移和缩放。这工作正常,鼠标输入等等。我遇到的问题比其他任何问题都更美观。由于 Canvas 的原点位于窗口的左上角(在 JPanel 内、JFrame 内),因此所有内容都会围绕该点缩放。我想知道是否有任何方法可以将原点设置为屏幕中心,或者围绕特定点进行缩放? (尽管 AffineTransform.scale() 只有一个构造函数,以scaleX和scaleY作为参数)。我尝试将 Canvas 的边界设置为负数,如下所示:

canvas.setBounds(-width/2, -height/2, width/2, height/2);

(宽度和高度是屏幕尺寸)。

这显然不起作用,因为负数超出了面板的坐标。

那么有人知道如何实现这一点吗?要么将屏幕中心设置为原点,要么围绕特定点而不是原点进行缩放?

最佳答案

这里的技巧是连接AffineTransform的实例。

  1. 移动整个渲染,使中心位于原点。
  2. 缩放渲染。
  3. 将渲染的中心(现在位于原点)移回到 View 的中心。

关于Java - 围绕特定点缩放 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com