Java: 如何用颜色填充 ArrayList 中的形状?
Java: How to fill shape from an ArrayList with color?
我有一个形状(矩形和椭圆形)的数组列表,我想绘制这些形状。 如何在 for 循环中用颜色填充它们?
我的 ArrayList 由矩形和椭圆组成。如果我执行 fillRect(color),它将 all 形状绘制为矩形,如果我执行 fillOval(color),它将所有形状绘制为椭圆。如何适当地填充椭圆和矩形?下面的代码只做轮廓。
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);
}
}
How do I fill them with color in the for loop?
您需要将颜色信息与形状一起存储。因此,您需要创建一个具有两个属性的自定义对象:"shape" 和 "color"。然后你可以在绘制形状之前设置图形颜色。
有关此方法的工作示例,请参阅 Custom Painting Approaches。
Graphics2D.fill(Shape) 就可以了。
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。
我有一个形状(矩形和椭圆形)的数组列表,我想绘制这些形状。 如何在 for 循环中用颜色填充它们?
我的 ArrayList 由矩形和椭圆组成。如果我执行 fillRect(color),它将 all 形状绘制为矩形,如果我执行 fillOval(color),它将所有形状绘制为椭圆。如何适当地填充椭圆和矩形?下面的代码只做轮廓。
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);
}
}
How do I fill them with color in the for loop?
您需要将颜色信息与形状一起存储。因此,您需要创建一个具有两个属性的自定义对象:"shape" 和 "color"。然后你可以在绘制形状之前设置图形颜色。
有关此方法的工作示例,请参阅 Custom Painting Approaches。
Graphics2D.fill(Shape) 就可以了。
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。