JavaFX如何获取X轴和Y轴的中心-点[0,0]位于图像的中心

标签 java javafx-2

enter image description here我的 JavaFX 应用程序可以加载图像并允许用户单击它并打印出 X 和 Y 坐标。

问题是图像的左上角是图像的“中心”[0,0]而不是实际图像,知道如何将X和Y设置为中心吗?

这是加载图像的代码:

BufferedImage bufferedImage = ImageIO.read(file);
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
myImageView.setImage(image);
myImageView.setFitWidth(300);
myImageView.setPreserveRatio(true);
myImageView.setCache(true);

以下是打印 mouseClickedEvent 位置的代码:

myImageView.setOnMouseClicked(ev -> {
    System.out.println("[" + ev.getX() + ", " + ev.getY() + "]");
});

红色矩形是实际的[0,0] 蓝色矩形是预期的 [0,0]

最佳答案

找到答案: 通过计算实际中心和预期中心之间的偏移量,我能够得到实际的 X 和 Y 坐标:

            double x = event.getX() - imageWidth / 2;
            double y = (event.getY() * -1) + (imageLength / 2);
            String msg ="[" + decimalFormat.format(x) + "," + decimalFormat.format(y) +"]";

关于JavaFX如何获取X轴和Y轴的中心-点[0,0]位于图像的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970267/

相关文章:

java - 在 JavaFX 2.0 中将标签置于节点的中心

java - 如何使用 JavaFX、JCSG 和 FXyz 进行差分运算后获得闭合的 3D 网格?

java - ConcurrentHashMap 中的并发级别

java - 突出显示 TextView 中可能包含 HTML 标签的文本

java - 检查 Java 中的内存布局

java - 为什么在 javaFX AreaChart 中指定 LowerBound 时表单会崩溃?

javafx - 如何在 StackPane(在 JavaFX 中)中的节点上实现碰撞检测?

java - 在单元测试中等待 Platform.RunLater

java - 绑定(bind)不匹配 : The type Foo is not a valid substitute

javafx 通过代码点击按钮