java - 如何渲染具有 3 种颜色渐变的圆弧?

标签 java swing gradient paintcomponent

我正在尝试渲染一条弧线,该弧线从绿色开始,过渡到黄色,最后变为红色。现在它只是使用标准 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));   
}

最佳答案

感谢 MadProgrammer

    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));
}

关于java - 如何渲染具有 3 种颜色渐变的圆弧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332317/

相关文章:

java - 增加 createCompoundBorder 的厚度

java - 我如何触发 JPanel 显示在不同的应用程序中?

android - 将渐变应用于 android 中 ListView 中的行

java - 对不适用于 Lollipop 的应用程序中的所有文本使用自定义字体

java - 如何将 "add"整数添加到 Java 字节数组的末尾?

java - NoSuchElementException 不解决

html - 如何使用线性渐变背景的数据属性值

java - Java Lambda 表达式是否与 Groovy 闭包逻辑类似?

java - 我怎样才能在 JAVA Swing 中有一个下载文件选项?

jquery - jQuery 幻灯片中的渐变不保持原样?