是否有 JavaFX 方法来测试坐标是否在闭合路径内?

2023-12-14

我试图找到一种 JavaFX 方法来检测坐标是否位于闭合路径内。

我创建了以下示例,并研究了各种方法,但是没有任何效果如我所愿,只有在非矩形形状内时才返回 true。

  • Node.contains()——仅适用于形状的边缘,不适用于内部
  • Node.intersect()——仅适用于矩形边界框
  • Shape.intersects()——仅适用于形状的边缘,不适用于内部

我可以只使用 JTS 库,但我忍不住认为必须有一个 JavaFX 本机方法来实现这一点。

public class ShapeContainsTest extends Application {

    public static void main(String[] args) {
        Application.launch(ShapeContainsTest.class);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        Path path = new Path();
        path.getElements().add(new MoveTo(100, 100));
        path.getElements().add(new LineTo(200, 100));
        path.getElements().add(new LineTo(150, 200));
        path.getElements().add(new ClosePath());
        Pane pane = new Pane(path);
        pane.setPrefSize(300, 300);
        pane.setOnMouseMoved(event -> {
            System.out.println("Contains? " + path.contains(event.getX(), event.getY()));
            System.out.println("Intersect? " + path.intersects(event.getX(), event.getY(), 1, 1));
            Circle point = new Circle(event.getX(), event.getY(), 1);
            System.out.println("Intersects() " + Shape.intersect(path, point));
            
        });
        primaryStage.setScene(new Scene(pane));
        primaryStage.show();
    }

}

构造一个带有填充的路径,任何填充值都可以工作,与填充颜色的颜色甚至不透明度无关。

正如 mipa 在评论中指出的:

重要的一点是形状必须有颜色集。否则它会被认为是空心的,当你完全在轮廓内时你不会受到打击。

Shape.intersect(path, point)仅当形状被填充时,才会像 contains 一样起作用,否则,在计算与形状未填充内部的交集时,它将返回一个空形状。

如果你不想让填充可见,你可以这样写:

path.setFill(Color.TRANSPARENT);

当形状填充透明颜色时,相交仍将在形状内部起作用。

可以使用不同的算法来确定填充。 JavaFX 定义了一些预设规则,可用于调整填充算法(如果需要),使用路径.setFillRule().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有 JavaFX 方法来测试坐标是否在闭合路径内? 的相关文章

随机推荐

  • 检测 HTML5 Video 元素是否正在播放 [重复]

    这个问题在这里已经有答案了 我浏览了几个问题来了解 HTML5 元素是否正在播放 但找不到答案 我查看了 W3 文档 它有一个名为 playing 的事件 但我似乎无法让它工作 这是我当前的代码 var stream document ge
  • Mockito 通过,但代码覆盖率仍然较低

    package com fitaxis test import java sql SQLException import org junit Assert import org junit Test import org mockito M
  • 在 Vue 项目中创建和操作 SVG

    我是 Vue js 新手 需要创建一个 Vue 组件来创建和操作 SVG 根据我的理解 在 Vue 组件中使用 JQuery 并不是最好的选择 不过我愿意 因为选择元素非常简单 这是我的 Vue 组件 但我不确定如何使其发挥作用 注意 SV
  • 如何通过jquery将点击更改为鼠标悬停或悬停?

    我想在鼠标悬停或悬停时显示日期 现在是 onclick 我已经使用工具提示来显示数据 但我想在鼠标悬停时显示数据 我尝试了很多但没有成功 任何机构都可以提供帮助 我们将不胜感激 提前致谢 这是我的代码 它想在单击鼠标悬停 悬停时进行更改
  • 按修改日期排序该数组?

    我有一个 php 文件 它在我的用户目录中创建一个包含所有内容的数组 然后该数组被发送回 iPhone 我的 php 创建的数组按字母顺序排序 我希望它按文件创建日期排序 这是我的 php 文件的样子 我该怎么做 谢谢 Using usor
  • 将泛型集合 List<> 绑定到属性网格

    我尝试绑定通用集合列表联系方式 to propGrid但输出与我的预期不符 我想列表联系方式显示为ListBox in propGrid 我该怎么做 谢谢 class Contact public string Name get set p
  • 如何获取执行查询的表名? (蟒蛇/sqlite)

    我正在运行一个简单的查询并将结果转换为 json 我想动态地执行此操作 以便我可以使用一个函数来处理所有查询 query INSERT INTO Tests name start end VALUES params name start e
  • 如何使用项目的哈希值检查 HashSet 是否包含该项目?

    我想检查 HashSet 是否包含特定元素 我已经有了int元素的哈希码 但不是对元素本身的引用 是否可以在不迭代整个集合的情况下做到这一点 没有为什么 哈希码与对象之间没有一对一的映射 鸽子原理 Net HashSet Dictionar
  • 嵌套并行和折叠 for 循环之间有区别吗?

    我知道启用嵌套并行性将允许嵌套 omp 并行 for 循环也被并行化 但我在嵌套的 for 循环 for 内部 中使用塌陷 2 有区别吗 为什么或者为什么不 假设最好的情况 循环索引之间没有依赖性并且其他条件相同 是的 有很大的区别 使用c
  • Asp.net Core azure Web 应用程序日志记录

    我有一个 asp net core 部署到 azure 我正在尝试使用以下命令配置日志记录到我的应用程序Microsoft Extentions Logging接口 目前我的应用程序正在将日志写入网络应用程序存储中的日志文件文件夹 这似乎是
  • 如何为 React 路由设置 apache 服务器?

    我的 React 应用程序在本地开发服务器上运行良好 但当我将生产就绪文件直接转储到 Apache 的 htdocs 目录时 它不起作用 这是我所拥有的 var www index html var www bundle js 我有 Doc
  • 如何使用 Zend 2 保存处理程序 DbTableGateway?

    The Zend Session 保存处理程序本教程提供了 DbTableGateway 的示例 其中使用未定义的 adapter 变量创建 TableGateway 我想使用处理程序来绑定会话管理器 来自教程的上一页 到我的数据库中的会话
  • 默认情况下使用多个字段进行多重搜索

    所以 有一个 jqGrid 带有声明 如下所示 grid jqGrid bunch of stuff searchGrid multipleSearch true 这很好 当我单击 搜索 按钮时 它会为我带来模式形式 我猜是第一列和 sop
  • 执行 C# 交互式 powershell 脚本

    假设我使用 C 执行 powershell 脚本 脚本执行的结果是请求凭据才能继续 Example Pipeline pipeline runspace CreatePipeline pipeline Commands AddScript
  • 如何在 WXP(和更新的 MSWindows)上使用 C# 终止所有[大]子进程

    问题 如何确定子进程中的所有进程流程树杀掉他们 我有一个用 C 编写的应用程序 它将 从服务器获取一组数据 生成第 3 方实用程序来处理数据 然后 将结果返回给服务器 这工作正常 但由于跑步消耗a lotCPU 和may需要长达一个小时 我
  • 具有 C++ 虚函数时的 GDB 不完整类型

    我刚刚注意到一些奇怪的事情 当我在类中添加 虚拟关键字 除构造函数之外的任何函数 时 我无法在 GDB 中显示对象的内容 GDB 说 不完整类型 这是代码 reco h ifndef RECO H define RECO H include
  • 使用 api 1.1 的 Twitter POST 问题

    我们刚刚更改为 Twitter api 1 1 现在发推文不起作用并返回错误 远程服务器返回错误 400 错误请求 对此进行的研究表明 这与身份验证有关 但我们正在发送刚刚从登录页面获得的 accessToken 和机密 在 api 1 0
  • Linux内核中使用的三个优先级有什么区别?

    我是 Linux 内核的新手 现在我正在研究 Linux 内核中的进程调度 Linux 中存在三种类型的优先级 静态优先级 动态优先级 实时优先级 现在我明白的是 静态优先级和动态优先级仅针对传统进程定义它们只能取 100 到 139 之间
  • 使用令牌保护 REST Web 服务 (Java)

    这个问题在某种程度上与下面链接的问题相关 但是 我需要更清楚地了解某些方面和一些附加信息 参考 REST Web 服务身份验证令牌实施 背景 我需要使用令牌实现 REST Web 服务的安全性 Web 服务旨在与 Java 客户端一起使用
  • 是否有 JavaFX 方法来测试坐标是否在闭合路径内?

    我试图找到一种 JavaFX 方法来检测坐标是否位于闭合路径内 我创建了以下示例 并研究了各种方法 但是没有任何效果如我所愿 只有在非矩形形状内时才返回 true Node contains 仅适用于形状的边缘 不适用于内部 Node in