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

时间:2014-04-24 11:48:23

标签: java infinity piccolo

我想在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)它不支持无限双打,虽然这在原则上是合法的;如果设置为无限,则根本不会绘制任何内容。

如何实施?

1 个答案:

答案 0 :(得分:0)

Java处理绘图的部分原因。

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