谁能告诉我如何为曲线下的区域着色?我已经使用Graphics2d绘制了一条曲线,但是不知道如何为其区域着色。
提前致谢

最佳答案

“曲线下”有点模糊。

如果可以绘制曲线,则可以填充曲线。填充曲线时,将连接端点以形成闭合形状。

您可以创建一个GeneralPath,该通用路径允许您绘制任何内容,例如具有曲线并包含视图区域底部的形状。

我提供了两个示例。

package draw;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.QuadCurve2D;
import javax.swing.JComponent;
import javax.swing.JFrame;

class MyCanvas extends JComponent {

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;

    QuadCurve2D q = new QuadCurve2D.Float();
    q.setCurve(10, 30, 10, 200, 100, 100);

    g2.draw(q);
    g2.fill(q);

    GeneralPath closedCurve = new GeneralPath();
    QuadCurve2D q2 = new QuadCurve2D.Float();
    q2.setCurve(0, 200, 150, 150, 300, 200);
    closedCurve.moveTo(0, 300);
    closedCurve.lineTo(0, 200);
    closedCurve.append(q2, true);
    closedCurve.lineTo(300, 300);
    closedCurve.closePath();

    g2.draw(closedCurve);
    g2.fill(closedCurve);

  }
}

public class DrawArc {
  public static void main(String[] a) {
    JFrame window = new JFrame();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setBounds(30, 30, 300, 320);
    window.getContentPane().add(new MyCanvas());
    window.setVisible(true);
  }
}

09-30 15:04