首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Piccolo2D中形成一个形状的洞?

如何在Piccolo2D中形成一个形状的洞?
EN

Stack Overflow用户
提问于 2013-10-27 12:30:21
回答 1查看 148关注 0票数 1

在主Java中,它支持“缠绕规则”,这可能有助于在形状上挖洞。

不幸的是,这个概念在Piccolo2D中被忽略了:

代码语言:javascript
运行
复制
public class Try_Holes_01 {

    @SuppressWarnings("serial")
    public static void main(String[] args) {

        final Path2D path = new Path2D.Double(Path2D.WIND_EVEN_ODD);
        //final Path2D path = new Path2D.Double(Path2D.WIND_NON_ZERO);

        path.append(new Ellipse2D.Double(100,100,200,200), false);
        path.append(new Ellipse2D.Double(120,120,100,100), false);

        JPanel panel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D) g;

                g2.fill(path);
            }
        };

        final PPath path_p = new PPath(path);
        path_p.setPaint(Color.BLACK);

        JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        frame.add(panel, BorderLayout.CENTER);
        frame.setSize(800, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        new PFrame() {
            @Override
            public void initialize() {
                getCanvas().getLayer().addChild(path_p);
            }
        };


    }

}

那么,如何在Piccolo2D路径中挖洞呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 15:39:26

PPath为其操作维护一个私有GeneralPath成员。它使用WIND_NON_ZERO初始化。幸运的是,可以用PPath.getPathReference()访问它。所以这应该能起作用:

代码语言:javascript
运行
复制
path_p.getPathReference().setWindingRule(Path2D.WIND_EVEN_ODD);

结果如下:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19618041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档