问题标签 [path-2d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
589 浏览

java - Path2D.intersect() 类似于 Area.intersect()

我玩过 Area.intersect() 并且想知道是否有一种方法可以使用 Path2D 创建一个与此类似的方法,因为我注意到在使用 Path2D 作为形状时性能有所提升。换句话说,取大 Path2D 的一部分并从该部分创建一个较小的 Path2D。

地图绘制 地图绘制 游戏内视图 在游戏中

注意:使用下面的哈希图,我根据每个“对象”将平铺形状渲染到查看区域,在这种情况下,这些对象将是不同的图像类型:海洋、草、黑曜石、岩石、沙子和污垢......

编辑:每种图像类型都有自己的整个地图区域,即 10000 像素 x 100000 像素,我相交的图块是 100 像素 x 100 像素,这些图块作为其给定类型作为 Path2D.Double 逐点推入链接的哈希图并渲染到屏幕上通过当前查看区域中的点。

0 投票
0 回答
388 浏览

java - Java Path2D.Double,追加但不减

我已经研究过使用 EVEN-ODD Winding 规则来在一个区域中创建孔。事情在论坛上,我能想出的只是一个 Path2D.Double() 在其自身附加一个洞。我想在已经存在的 Path2D 中创建一个整体,就像 Area 类具有 Area.subtract(new Shape()); 做。生无可恋。我知道 Path2D 有能力提高我的游戏性能。

注意:输出应该是一个空的正方形,因为更大的圆圈完全覆盖了瓷砖,或者一个瓷砖的结果是圆圈相交和现有的瓷砖形状被移除,留下瓷砖的剩余部分......

研究链接 StackOverflow 线程

编辑:

0 投票
1 回答
484 浏览

java - Java Path2D 性能问题

我有一个利用 Path2D.Float 绘制矢量对象(大型分形设计)的程序。我的代码允许缩放和平移。我有一个轴对象,它具有根据当前缩放设置(存储在轴对象中)将世界坐标(双精度对)转换为显示坐标(浮点数对)的方法。

无论如何,矢量图是大而详细的,并且在世界坐标中包含许多线段。每次用户缩放或平移时,都会创建新的 Path2D 对象并将其渲染到屏幕上。

缩小时一切都非常流畅。当我放大到一定深度时会出现问题。显然 Path2D 线变得很长,这会减慢它们的渲染速度(即使绝大多数都在可视区域之外!)。这不是我的转换算法消耗资源。我对其进行了分析,与小剪辑区域相比,由于线条的大小,它肯定是 Java 图形绘制算法变慢了。

我希望有一种方法可以让 Java 自动处理大行的剪切。在绘制之前,我确实从图形对象调用 setClip()。我不明白什么需要这么多时间。当线条与剪切矩形相比较长时,剪切算法是否存在问题/效率低下?到目前为止,我认为我没有缩放到我从世界坐标到显示坐标的转换导致溢出。我得检查一下。如果是这种情况,我会尝试使用 Path2D.double 代替。

无论如何,任何帮助表示赞赏。我相信我最终会弄清楚这一点,但我希望遇到同样问题的人可以给我一个指点,这样就不需要很长时间才能弄清楚。

0 投票
0 回答
160 浏览

java - 将对象与曲线相交

我用 Path2D 创建了一条曲线,现在我想检测对象何时与曲线相交,而不是包含曲线的矩形。当我绘制曲线时,这条线包含在一个矩形内,但我想访问曲线的精确坐标。我真的不知道如何进行。

0 投票
1 回答
292 浏览

java - Java 自定义 Path2D

对于我正在做的一个项目,我创建了一个自定义 Path2D 类来在屏幕上绘制一个 H 形“卡尺”。我想拖动并最终调整屏幕上的卡尺大小。我已经成功设置了 Path2D,这样我就可以绘制卡尺了,代码如下所示:

  1. 声明和构造函数:

    /li>
  2. build() 方法(用于绘制路径)和 setCalliper() 方法,用于重新定义坐标或宽度、高度:

    /li>

我创建了一个类来在屏幕上绘制这个卡尺,它会这样做,但是如果我尝试在屏幕上拖动卡尺,它不会在我拖动时擦除原始形状,所以我得到了一长串形状被留下来。我以为我已经super.paintComponent(g)从我的paintComponent(Graphics g)方法中省略了,但即使有它,代码仍然不起作用。

我的拖动方法如下所示:

如果我将cal = setCalliper(calX, calY, calW, calH);上面的行更改为 readcal = new Calliper(calX, calY, calW, calH);那么它可以工作,但我被告知我不应该这样做。

任何想法为什么它不能按预期工作?

0 投票
1 回答
120 浏览

java - 如何反序列化 Path2D.Double 对象?

我正在尝试保存一个具有ArrayListof的对象Connector,这是一个扩展的类Path2D.Double。它给了我例外gui.Connector; no valid constructor。我做了一些研究,发现了这个:

序列化 Path2D.Double 的子类时没有有效的构造函数

它给了我一个很好的解释,但没有解决方法。有没有办法可以反序列化的子类Path2D.Double

0 投票
2 回答
1006 浏览

java - 使用 .transform 更改 Path2D.Double 时遇到问题

我的程序应该允许用户将矩阵的前六个数字输入到文本字段中,然后点击应用按钮,使用 .transform 方法更改 Path2D,参数是六个输入的数字。我的问题是,每当我输入内容并点击应用时,转换与应有的完全不同,并且原始箭头也保留在后面。

这真的很奇怪,我不知道问题出在哪里。使用仿射变换,一切都应该在正确的位置,但是变换出来的都是错误的。

这应该是这样的: 在此处输入图像描述

这对我来说是这样的: 在此处输入图像描述

我将把完整的代码放在下面,这样你就可以自己运行它,看看你是否能够弄清楚。谢谢!

0 投票
1 回答
1028 浏览

svg - 在 TypeScript 项目中使用 Path2D 未解决

我想在 TypeScript 项目中使用新的Path2D api,但在 lib.es6.d.ts 中看不到它我最好的使用方法是什么?有人有 Path2D 的 d.ts 文件吗?

0 投票
1 回答
626 浏览

java - 使用路径 2d 检测坐标

我正在尝试使用提供的contains方法来检测坐标。经过研究,我使用的代码似乎对其他人有效。但在这种情况下,我无法从我的布尔值中获得正回报,尽管它位于绘制的Path2D多边形内。

PolygonCreation : For 循环绘制坐标包含检测坐标

鉴于这组代码,我的坐标与第一个位置的起始坐标相同,并且已被检测为错误。

链接到路径 2d 文档:

https://docs.oracle.com/javase/7/docs/api/java/awt/geom/Path2D.html

https://docs.oracle.com/javase/7/docs/api/java/awt/geom/Path2D.Double.html

0 投票
0 回答
191 浏览

java - 使用坐标和 path2d 找出一个点是否在多边形的线上

所以我使用坐标来创建一个使用 path2d 的多边形。我需要确定一个点是否正好在我创建的多边形的线上。

这是我现在的代码,它允许我找出特定坐标是否在多边形内,但如果该点正好在线,则返回 false。

如果有人能看到一个很好的解决方案,那么如果该点在线,如果它只是重​​新返回 true 也可以。提前致谢。