gpt4 book ai didi

JavaFX:PannaableCanvas:获取 CenterX/Y

转载 作者:行者123 更新时间:2023-11-30 06:07:08 24 4
gpt4 key购买 nike

我一直在使用定制的 PannaableCanvas was presented here ,我遇到了一些麻烦。我的软件即将完成,我需要做的最后一件事是添加对在屏幕中心生成节点的支持。所以我最初做的是:

nodeTranslateX/Y = -pannableCanvas.getTranslateX/Y

这种方法一直有效,直到我意识到如果放大/缩小(比例不再= 1.0),它就会完全困惑,并且节点开始被放置在奇怪的位置。然后我尝试了:

nodeTranslateX/Y = -pannableCanvas.getTranslateX/Y * pannableCanvas.getScale()

这也不起作用!它变得更加不正常。

我尝试了多种转换组合,例如划分比例、反转比例、使用 screenToLocal() 等等。他们都没有工作。问题是,当您缩小时, Canvas 的 translateX/Y 会根据比例进行调整,但是当节点应该以 300 等合理坐标生成时,这会给您 1500 之类的东西。

有没有办法获取屏幕左上角相对于 Canvas 的坐标?我完全不知道如何解决这个问题。同样,我只需要能够在屏幕中心生成节点。我该怎么办?

感谢您的宝贵时间!

最佳答案

我通过这样做让它工作:

Window window = scene.getWindow();
double screenCenterX = (window.getX() + window.getWidth()/2);
double screenCenterY = (window.getY() + window.getHeight()/2);

Point2D point = pannablePane.screenToLocal(screenCenterX, screenCenterY);

double nodeX = point.getX() - MyNodeImplementation.WIDTH/2;
double nodeY = point.getY() - MyNodeImplementation.HEIGHT/2;

我误认为 screenX/Y 位于窗口内(即中心 = WIDTH/2,HEIGHT/2),但实际上您也必须考虑实际的窗口位置。

关于JavaFX:PannaableCanvas:获取 CenterX/Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51075520/

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