如何在Java中创建带孔的形状?
我想在里面创建一个带圆孔的圆圈。
如果我只是将Ellipse2D
添加到Path
我就没有漏洞了。
更新
我发现,缠绕规则控制着:
public class Try_Holes_01 {
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);
@SuppressWarnings("serial")
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.fill(path);
}
};
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);
}
}
即。它用WIND_EVEN_ODD
画出洞,但用WIND_NON_ZERO
画出填充的形状。
但现在我想知道,是否可以用WIND_NON_ZERO
画出洞?
根据文档,这条规则与平价有关。所以,显然,如果我能够改变内圈方向,那么它会用WIND_NON_ZERO
画出洞。
是否可以控制圆周方向?我可以在创作后反转方向吗?