我有一个形状(矩形和椭圆形)的ArrayList,我想绘制这些形状。 如何在for循环中用颜色填充它们?
我的ArrayList由矩形和椭圆组成。如果我执行fillRect(颜色),它会将所有形状绘制为矩形,如果我执行fillOval(颜色),它会将所有形状绘制为椭圆形。如何正确填充椭圆和矩形?以下代码仅列出了大纲。
private ArrayList<Shape> shapes = new ArrayList<Shape>();
private Shape currentShape; // the shape being drawn (either Rectangle or Oval)
public void paintComponent(Graphics g) {
super.paintComponent(g);
for(Shape s : shapes) {
Graphics2D g2d = (Graphics2D) g.create();
s.paint(g2d);
}
}
答案 0 :(得分:2)
private List<Shape> shapes = new ArrayList<>();
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
for (Shape shape : shapes) {
g2d.fill(shape);
}
}
否g.create
。每个paintComponent参数实际上都是Graphics2D这一事实在历史上是成立的:他们用更详尽的Graphics2D取代了Graphics,但为了向后兼容保留了Graphics。
答案 1 :(得分:1)
如何在for循环中用颜色填充它们?
您需要使用Shape存储颜色信息。因此,您需要创建一个具有两个属性的自定义对象:&#34; shape&#34;和&#34;颜色&#34;。然后,您可以在绘制Shape之前设置图形颜色。
有关此方法的实例,请参阅Custom Painting Approaches。