Java 相交形成闭合形状的多条绘制线的填充颜色

Java 相交形成闭合形状的多条绘制线的填充颜色,java,colors,fill,stroke,Java,Colors,Fill,Stroke,我需要用Java和Graphics2D绘制一辆汽车。我使用了多个基本行程来确定汽车的形状。我该如何用颜色填充它?例如,在三角形的形状中画3条线,然后想用颜色填充它。你不能简单地填充一个仅通过画三条线创建的形状。您必须定义形状,包括它所包含的所有线 具体如何实现这一点取决于几个因素。例如,是否要对所有三条线使用相同的笔划,或者它们是否需要不同的笔划 如果您已经提供了一些信息,说明您目前是如何准确地画出这些线的,这可能会有所帮助。我试着在这里猜一猜 因此,假设当前代码大致如下所示: void pai

我需要用Java和Graphics2D绘制一辆汽车。我使用了多个基本行程来确定汽车的形状。我该如何用颜色填充它?例如,在三角形的形状中画3条线,然后想用颜色填充它。

你不能简单地填充一个仅通过画三条线创建的形状。您必须定义形状,包括它所包含的所有线

具体如何实现这一点取决于几个因素。例如,是否要对所有三条线使用相同的笔划,或者它们是否需要不同的笔划

如果您已经提供了一些信息,说明您目前是如何准确地画出这些线的,这可能会有所帮助。我试着在这里猜一猜

因此,假设当前代码大致如下所示:

void paintCar(Graphics2D g)
{
    g.setStroke(new BasicStroke(1.0f));
    g.setColor(Color.BLUE);

    // Draw the triangle    
    g.drawLine(100,100,200,100);
    g.drawLine(100,200,150, 50);
    g.drawLine(150, 50,100,100);
}
另外填充此三角形的最简单方法是如下更改:

void paintCar(Graphics2D g)
{
    g.setStroke(new BasicStroke(1.0f));
    g.setColor(Color.BLUE);


    Path2D path = new Path2D();

    // Build the triangle    
    path.append(new Line2D.Double(100,100,200,100), false);
    path.append(new Line2D.Double(100,200,150, 50), true);
    path.append(new Line2D.Double(150, 50,100,100), true);

    // Draw the triangle
    g.draw(path);

    // Fill the triangle, with a different color
    g.setColor(Color.CYAN);
    g.fill(path);
}
但是请注意。。。 。。。有更优雅和简洁的方法来实现这一点。通常,不会附加单个
Line2D
段,只需使用
Path2D
构建形状:

void paintCar(Graphics2D g)
{
    g.setStroke(new BasicStroke(1.0f));
    g.setColor(Color.BLUE);

    // Build the triangle    
    Path2D path = new Path2D();
    path.moveTo(100,100);
    path.lineTo(200,100);
    path.lineTo(150, 50); 
    path.closePath();

    // Draw the triangle
    g.draw(path);

    // Fill the triangle, with a different color
    g.setColor(Color.CYAN);
    g.fill(path);
}

因此,如果您有适当形式的形状坐标(可能存储为
Point2D
对象列表),那么您可以更轻松地创建一个可以绘制和填充的形状。

您可能需要使用
polygon
@FastSnail,我想知道为什么oracle网站仍然建议这样做。这似乎是历史遗留下来的,过时了。正确的方法是在这里使用一个
Path2D
。@Marco13 oops从来都不是新的。。