java的fillpolygon的填充规则是奇偶性原则,能否忽略这个原则?例如我要把一张图片里面的多边形区域去除,如果两个多边形之间有交集,则交集的部分不会被去除,有什么方法呢?

解决方案 »

  1.   

    GeneralPath p = new GeneralPath(GeneralPath.WIND_NON_ZERO);//无奇偶性
            p.moveTo(0.0f, 0.0f);
            p.lineTo(w*.5f, 0.0f);
            p.lineTo(w*.5f, h*.2f);
            p.lineTo(0.0f, h*.2f);
            p.closePath();        p.moveTo(w*.05f, h*.05f);
            p.lineTo(w*.55f, h*.05f);
            p.lineTo(w*.55f, h*.25f);
            p.lineTo(w*.05f, h*.25f);
            p.closePath();        g2.setColor(LIGHT_GRAY);
            g2.fill(p);
            g2.setColor(BLACK);
            g2.drawString("NON_ZERO rule", 0, -5);
            g2.translate(0.0f, h*.45);        p.setWindingRule(GeneralPath.WIND_EVEN_ODD); //设置奇偶性为打开
            g2.setColor(LIGHT_GRAY);
            g2.fill(p);
            g2.drawString("EVEN_ODD rule", 0, -5);