Java 用颜色填充由Line2D制成的形状

Java 用颜色填充由Line2D制成的形状,java,graphics2d,Java,Graphics2d,在java中,我通过使用2D线连接点来创建闭合形状。如何绘制/填充颜色?我不知道您的代码是什么,但我假设您有一个类似这样的类: 您正在搜索该方法 公共类应用程序扩展JFrame{ 公共应用程序(){ 超级(“绘画”); requestFocus(); DrawingPane dpane=新DrawingPane(); setContentPane(dpane); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 设置大小(600600); 可设置大小

在java中,我通过使用2D线连接点来创建闭合形状。如何绘制/填充颜色?

我不知道您的代码是什么,但我假设您有一个类似这样的类:

您正在搜索该方法

公共类应用程序扩展JFrame{
公共应用程序(){
超级(“绘画”);
requestFocus();
DrawingPane dpane=新DrawingPane();
setContentPane(dpane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置大小(600600);
可设置大小(真);
setVisible(真);
长启动=System.currentTimeMillis();
while(true){
long now=System.currentTimeMillis();
如果(现在开始>10){//FPS
开始=现在;
dpane.revalidate();
dpane.repaint();
}
}
}
公共静态void main(字符串[]args){
新应用程序();
}
类DrawingPane扩展了JPanel{
@凌驾
公共组件(图形g2){
图形2d g=(图形2d)g2;
g、 setRenderingHint(RenderingHits.KEY\u ANTIALIASING,RenderingHits.VALUE\u ANTIALIAS\u ON);
g、 设置颜色(颜色为黑色);
//-图纸-
//你不需要任何台词
点[]点=新点[]{新点(0,0),新点(1,0),新点(1,1)};
int[]points_x=新int[points.length];
int[]points_y=新int[points.length];
对于(int p=0;p
首先,通过将线条附加到以下形状来创建单个形状:

然后,将其传递给:


请提供您的代码。您可以从查看并尝试一些内容开始。如果你有一个特别的问题,关于你已经尝试过的东西,那么不要犹豫问一个问题,提供你已经尝试过的东西以及为什么它不适合你
public class App extends JFrame{
    public App() {
        super("Paintings");
        requestFocus();
        DrawingPane dpane=new DrawingPane();
        setContentPane(dpane);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600, 600);
        setResizable(true);
        setVisible(true);
        long start = System.currentTimeMillis();
        while (true){
            long now = System.currentTimeMillis();
            if (now-start > 10) { //FPS
                start=now;
                dpane.revalidate();
                dpane.repaint();
            }
        }
    }
    public static void main(String[] args) {
        new App();
    }
    class DrawingPane extends JPanel{
        @Override
        public void paintComponent(Graphics g2){
            Graphics2D g=(Graphics2D)g2;
            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g.setColor(Color.BLACK);
            //-THE DRAWING-
            //You wont need any lines
            Point[] points=new Point[] {new Point(0,0),new Point(1,0),new Point(1,1)};
            int[] points_x=new int[points.length];
            int[] points_y=new int[points.length];
            for (int p=0; p < points.length; p++) {
                 points_x[p]=points[p].x;
                 points_y[p]=points[p].y;
            }
            g.drawPolygon(points_x,points_y,points.length); //Draw the outlines
            g.fillPolygon(points_x,points_y,points.length); //Filled Polygon
        }
    }
}
private Path2D createSingleShape(Line2D[] lines) {
    Path2D path = new Path2D.Float();

    for (Line2D line : lines) {
        path.append(line, path.getCurrentPoint() != null);
    }

    path.closePath();

    return path;
}
@Override
protected void paintComponent(Graphics graphics) {
    super.paintComponent(graphics);

    Graphics2D g = (Graphics2D) graphics;

    Shape shape = createSingleShape(lines);
    g.fill(shape);
}