Java tutorial
import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.geom.QuadCurve2D; import java.awt.geom.Rectangle2D; import java.util.Vector; import javax.swing.JFrame; public class QuadCurveControlPoint extends JFrame { DrawingCanvas canvas = new DrawingCanvas(); public QuadCurveControlPoint() { getContentPane().add(canvas); setSize(500, 500); setVisible(true); } public static void main(String arg[]) { new QuadCurveControlPoint(); } class DrawingCanvas extends Canvas { Vector quadCurves = new Vector(); QuadCurve2D selectedCurve = null; Rectangle2D boundingRec = null; public DrawingCanvas() { setSize(400, 200); quadCurves.addElement(new QuadCurve2D.Float(20, 20, 80, 160, 120, 20)); quadCurves.addElement(new QuadCurve2D.Float(120, 100, 160, 40, 200, 180)); for (int i = 0; i < quadCurves.size(); i++) { QuadCurve2D curve = (QuadCurve2D) quadCurves.elementAt(i); selectedCurve = curve; boundingRec = curve.getBounds2D(); System.out.println(selectedCurve.getX1()); System.out.println(selectedCurve.getY1()); System.out.println(selectedCurve.getCtrlX()); System.out.println(selectedCurve.getCtrlY()); System.out.println(selectedCurve.getX2()); System.out.println(selectedCurve.getY2()); double flatness = selectedCurve.getFlatness(); System.out.println(flatness); } } public void paint(Graphics g) { Graphics2D g2D = (Graphics2D) g; for (int i = 0; i < quadCurves.size(); i++) { g2D.draw((QuadCurve2D) quadCurves.elementAt(i)); } if (boundingRec != null) { drawHighlightSquares(g2D, boundingRec); } } public void drawHighlightSquares(Graphics2D g2D, Rectangle2D r) { double x = r.getX(); double y = r.getY(); double w = r.getWidth(); double h = r.getHeight(); g2D.setColor(Color.black); g2D.fill(new Rectangle.Double(x - 3.0, y - 3.0, 6.0, 6.0)); g2D.fill(new Rectangle.Double(x + w * 0.5 - 3.0, y - 3.0, 6.0, 6.0)); } } }