使用java为曲线下的区域着色

时间:2016-01-31 09:47:40

标签: java awt graph-coloring

谁能告诉我如何为曲线下的区域着色?我使用Graphics2d绘制了曲线,但不知道如何为其区域着色。 在此先感谢

1 个答案:

答案 0 :(得分:2)

“在曲线下”有点模糊。

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

您可以创建一个允许绘制任何内容的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);
  }
}