2016-01-31 36 views

回答

1

“在曲线下”有点含糊。

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

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