Java 如何使用3色渐变渲染圆弧?

Java 如何使用3色渐变渲染圆弧?,java,swing,gradient,paintcomponent,Java,Swing,Gradient,Paintcomponent,我试图渲染一个从绿色开始,过渡到黄色,最后过渡到红色的圆弧。现在,它只是使用标准GradientPaint方法从绿色过渡到红色。有没有办法用3种颜色来做 public void paintComponent(Graphics gr) { super.paintComponent(gr); Graphics2D g = (Graphics2D) gr; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, Renderin

我试图渲染一个从绿色开始,过渡到黄色,最后过渡到红色的圆弧。现在,它只是使用标准GradientPaint方法从绿色过渡到红色。有没有办法用3种颜色来做

public void paintComponent(Graphics gr) {
    super.paintComponent(gr);
    Graphics2D g = (Graphics2D) gr;

    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    BasicStroke wideStroke = new BasicStroke(24.0f);
    g.setStroke(wideStroke);

    g.setPaint(new GradientPaint(new Point(10, 140), Color.GREEN, new Point(100, 10), Color.RED));  

    g.draw(new Arc2D.Double(25, 25, 200, 200, 180, -90, Arc2D.OPEN));   
}

多亏了疯狂的程序员

    public void paintComponent(Graphics gr) {
    super.paintComponent(gr);
    Graphics2D g = (Graphics2D) gr;

    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    BasicStroke wideStroke = new BasicStroke(24.0f);
    g.setStroke(wideStroke);

    LinearGradientPaint lgp = new LinearGradientPaint(
            new Point2D.Float(0, 160),
            new Point2D.Float(160, 0),
            new float[] {0f, 0.5f, 1f},
            new Color[] {Color.green, Color.yellow, Color.red}
            );

    g.setPaint(lgp);

    g.draw(new Arc2D.Double(25, 25, 200, 200, 180, -90, Arc2D.OPEN));
}

您可以使用一个允许多种颜色(和点)的,并且工作完美的。非常感谢。