Java 在窗格或区域内使用备用坐标系

Java 在窗格或区域内使用备用坐标系,java,javafx,Java,Javafx,我正在尝试设置一个窗格,以便放置在该窗格中的对象使用除JavaFX“场景像素”之外的坐标系。例如 我的坐标系中的1024个单位可能对应于1个“场景像素” (JavaFX使用的单位有更好的名称吗?)。然而,美国, 我添加到窗格中的对象中的对象需要 使用“场景像素”(例如,标签似乎要使用 渲染文本时的像素位置) 下面的要点显示了一个我正在寻找的设置的简单示例,但它有问题 我创建了一个添加转换的容器组(实际上是一个窗格) 这样1个单位=32个像素。我将对象添加到此容器。每个 我添加的对象具有指定大小和

我正在尝试设置一个窗格,以便放置在该窗格中的对象使用除JavaFX“场景像素”之外的坐标系。例如 我的坐标系中的1024个单位可能对应于1个“场景像素” (JavaFX使用的单位有更好的名称吗?)。然而,美国, 我添加到窗格中的对象中的对象需要 使用“场景像素”(例如,标签似乎要使用 渲染文本时的像素位置)

下面的要点显示了一个我正在寻找的设置的简单示例,但它有问题

我创建了一个添加转换的容器组(实际上是一个窗格) 这样1个单位=32个像素。我将对象添加到此容器。每个 我添加的对象具有指定大小和位置的外部窗格 以单位表示,以及仅用于反转比例的内部窗格 外部窗格的转换。在这个内部窗格中,我 可以添加标签等,这些都可以正确渲染

我在转换之间设置了绑定,以便有效地 通过调整组容器上的变换来缩放和平移窗格内的视图。然而:关于这个设置的一些东西似乎令人困惑 JavaFX内部的一些东西;我在屏幕上看到的结果似乎并不令人满意 匹配JavaFX认为的各种对象的边界。这 在我尝试设置边界等操作时会导致视觉问题 对象,并似乎混淆了ScenecView

以下是选中容器组的快照(看起来正确):

下面是选中底部对象外部窗格的快照:

请注意,尽管对象实际上在屏幕上呈现为右侧 大小(浅灰色方框之一),ScenicView似乎认为 对象的边界是1x1:它们是1x1,但表示时是1x1 在我的自定义坐标系中,而不是在JavaFX“场景像素”中。在屏幕截图中你几乎看不到这一点:ScenecView高亮显示的对象左上角有一个很小的像素,显示它认为边界是什么

下面是选中底部对象内部窗格的快照:

这看起来是正确的,因为边界包含标签和标签 没有别的了

我做错什么了吗?我不知道我是不是在滥用权力
转换与否。

我正在我的项目中做一些非常类似的事情。与您的方法不同,我不使用窗格。我只使用分组,到目前为止还没有注意到任何问题。可能只是ScenecView中有一个bug

我不知道这是否也与您相关,但至少在我的情况下,我还必须对所有相关的形状属性(例如笔划宽度)应用反向缩放。我只想缩放外部几何体的位置,但我仍然希望以像素为单位指定笔划宽度


这很容易变得非常复杂,但从技术上讲,我没有遇到过这种方法的任何问题。

Iv'e看到了您在JavaFX开发列表上的讨论。最接近的原因已经清楚地说明了——你在问“怎么了?”而没有提供一个可以回答这个问题的答案。如果外部要点是MCVE,那么将其嵌入到您的问题中。MCVE的概念不是“魔锤”,一切都是钉子!有时,涉及的复杂性太大,无法创建MCVE。这是一个写得很好、有文档记录的问题/主题,不应将IMHO标记为离题。@AdrianRomanelli您可以问一个问题,说明问题为什么结束。这个网站上有一些规则,说明什么是这个网站的好问题,什么不是。规则之一是此类问题必须有MCVE。如果你不能展示一个,那么这个网站就不是提问的地方,不管它写得有多好。这不是你的意见,而是规则。StackExchange上还有其他与软件相关的网站,如CodeReview和SoftwareEngineering,它们可能更适合主题外的问题。我理解规则,这篇文章不容易回答。“我在转换之间设置了绑定,这样我就可以通过调整组容器上的转换来有效地缩放和平移窗格内的视图。但是:这种设置似乎混淆了JavaFX内部的某些内容;我在屏幕上看到的结果似乎与JavaFX认为的各种对象的边界不匹配。”这就是问题所在,开发人员在“转换之间的绑定”方面遇到了问题,并展示了他如何设置绑定来支持他的观点。错误无法通过MCVE显示。@AdrianRomanelli“开发人员在“转换之间的绑定”方面有问题,并显示了他如何设置绑定以支持他的观点。”但他没有显示如何设置,问题中没有任何代码,这正是原因所在。如果您没有处理并发或复杂的技术堆栈,那么MCVE几乎总是可能的。如果要点复制了问题,他可以像被告知的那样将其粘贴到问题中。