gpt4 book ai didi

java - 如何在Piccolo2D中制作无限(无限)节点?

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:28 25 4
gpt4 key购买 nike

我想在 Piccolo2D 中绘制一些无限的对象,例如无尽的矩形(笛卡尔)网格。最好在这个网格上有一些几何对象,就像在图形编辑器中一样。

不幸的是,Piccolo 以某种方式确定是否需要调用 Paint,并且没有为我适本地执行此操作。

下面的程序包含黄色对象,我想让它变得无穷无尽。它的类型是PEndless。我小时候就给它添加了圆圈。

package tests.endless;

import java.awt.Color;
import java.awt.geom.Rectangle2D;

import org.piccolo2d.PNode;
import org.piccolo2d.extras.PFrame;
import org.piccolo2d.nodes.PPath;
import org.piccolo2d.util.PPaintContext;

public class Try_PGrid {

public static class PEndless extends PNode {

@Override
protected void paint(PPaintContext paintContext) {

Rectangle2D localClip = paintContext.getLocalClip();
paintContext.getGraphics().setColor(Color.yellow);
paintContext.getGraphics().fill(localClip);

}

}

public static void main(String[] args) {

new PFrame() {

@Override
public void initialize() {

PPath circle = PPath.createEllipse(0, 0, 100, 100);

PEndless grid = new PEndless();
grid.addChild(circle);
//grid.setBounds(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY); // not working at all
//grid.setBounds(-10, -10, 50, 50); // yellow until circle visible
grid.setBounds(-1000, -1000, 2000, 2000); // yellow until bounds

getCanvas().getLayer().addChild(grid);


}



};

}

}

不幸的是,我发现:

1) 如果边界是默认的(空),则仅当圆圈可见时才绘制黄色

2) 如果边界很大且有限,则在边界内绘制黄色

3) 它不支持无限 double ,尽管这原则上是合法的;如果设置为无限,它根本不会绘制任何东西。

如何实现?

最佳答案

这是 Java 处理绘图方式的一部分。

here有关此问题的更多信息以及如何防止此问题的指南。

关于java - 如何在Piccolo2D中制作无限(无限)节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com