填充形成闭合形状的多个画线的颜色

时间:2015-07-30 14:22:49

标签: java colors fill stroke

我需要使用Java和Graphics2D绘制一辆汽车。我使用了多个basicstrokes来提出汽车的形状。如何填充颜色?一个例子是以三角形的形状绘制3条线,然后想要用颜色填充它。

1 个答案:

答案 0 :(得分:2)

您不能简单地填充仅由绘图三行创建的形状。您必须定义形状,包括它所包含的所有行。

这究竟是如何实施取决于服务因素。例如,是否要对所有三条线使用相同的笔划,或者它们是否需要不同的笔划。

如果您已经提供了一些关于您目前是如何绘制线条的信息,这可能会有所帮助。我会试着在这里猜一下......

所以假设您当前的代码大致如下所示:

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个对象的列表),您可以更轻松地构建一个可以绘制和填充的形状。