Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java为曲线下的区域着色_Java_Awt_Graph Coloring - Fatal编程技术网

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

使用java为曲线下的区域着色,java,awt,graph-coloring,Java,Awt,Graph Coloring,有人能告诉我如何给曲线下的区域上色吗?我用Graphics2d画了一条曲线,但不知道如何给它的面积上色。 提前感谢“曲线下”有点模糊 如果可以绘制曲线,则可以填充曲线。填充曲线时,将连接端点以形成闭合形状 您可以创建一个GeneralPath,它允许您绘制任何东西,例如具有曲线并包含视图区域底部的形状 我提供了两者的一个例子 package draw; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.g

有人能告诉我如何给曲线下的区域上色吗?我用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);
  }
}