我有一个利用 Path2D.Float 绘制矢量对象(大型分形设计)的程序。我的代码允许缩放和平移。我有一个轴对象,它具有根据当前缩放设置(存储在轴对象中)将世界坐标(双精度对)转换为显示坐标(浮点数对)的方法。
无论如何,矢量图是大而详细的,并且在世界坐标中包含许多线段。每次用户缩放或平移时,都会创建新的 Path2D 对象并将其渲染到屏幕上。
缩小时一切都非常流畅。当我放大到一定深度时会出现问题。显然 Path2D 线变得很长,这会减慢它们的渲染速度(即使绝大多数都在可视区域之外!)。这不是我的转换算法消耗资源。我对其进行了分析,与小剪辑区域相比,由于线条的大小,它肯定是 Java 图形绘制算法变慢了。
我希望有一种方法可以让 Java 自动处理大行的剪切。在绘制之前,我确实从图形对象调用 setClip()。我不明白什么需要这么多时间。当线条与剪切矩形相比较长时,剪切算法是否存在问题/效率低下?到目前为止,我认为我没有缩放到我从世界坐标到显示坐标的转换导致溢出。我得检查一下。如果是这种情况,我会尝试使用 Path2D.double 代替。
无论如何,任何帮助表示赞赏。我相信我最终会弄清楚这一点,但我希望遇到同样问题的人可以给我一个指点,这样就不需要很长时间才能弄清楚。