秘笈心法
心法领悟007:快速定义多边形的顶点坐标。
由于绘制多边形需要各顶点的x坐标和y坐标数组。因此,可以在草纸上把图形画出来,然后再根据图形定义坐标点就容易多了。
实例008 绘制二次曲线
实例说明
本实例演示如何在Java中绘制二次曲线。运行程序,将在窗体上绘制二次曲线,效果如图1.8所示。
关键技术
本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的draw()方法和使用QuadCurvel2D.Double类创建二次曲线对象来实现的。
(1)使用Graphics2D类的draw()方法,并将QuadCurvel2D.Double类创建的二次曲线对象,作为draw()方法的参数,实现绘制二次曲线的操作,draw()方法的定义如下:
public abstract void draw(Shape shape)
参数说明
shape:要绘制的形状。
(2)使用QuadCurvel2D.Double类创建二次曲线对象,其构造方法的定义如下:
public QuadCurve2D.Double(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
参数说明
? x1:起始点的x坐标。
? y1:起始点的y坐标。
? ctrlx:控制点的x坐标。
x ctrly:控制点的y坐标。
y x2:结束点的x坐标。
z y2:结束点的y坐标。
设计过程
(1)新建一个项目。
(2)在项目中创建一个继承JFrame类的DrawQuadCurveFrame窗体类。
(3)在DrawQuadCurveFrame窗体类中,创建内部面板类DrawQuadCurvePanel,并重写JComponent类的paint()方法,在该方法中使用QuadCurvel2D.Double类创建二次曲线对象,并使用Graphics2D类的draw()方法绘制该二次曲线。
(4)将内部面板类DrawQuadCurvePanel的实例,添加到窗体类DrawQuadCurveFrame的内容面板上,用于在窗体上显示绘制的二次曲线,代码如下:
class DrawQuadCurvePanel extends JPanel { // 创建内部面板类
public void paint(Graphics g) { // 重写paint()方法
Graphics2D g2=(Graphics2D)g; // 获得Graphics2D对象
// 创建二次曲线,其中点(120,100)是控制点,点(60,20)是起始点坐标,点(180,20)是终点坐标
QuadCurve2D.Double quadCurve1 = new QuadCurve2D.Double(60,20,120,100,180,20);
g2.draw(quadCurve1); // 绘制二次曲线
// 创建二次曲线,其中点(120,40)是控制点,点(60,120)是起始点坐标,点(180,120)是终点坐标
QuadCurve2D.Double quadCurve2 = new QuadCurve2D.Double(60,120,120,40,180,120);
g2.draw(quadCurve2); // 绘制二次曲线
}
}
秘笈心法
心法领悟008:绘制二次曲线可以更节省内存空间。
绘制二次曲线时,可以使用QuadCurvel2D.Double类和QuadCurvel2D.Float类创建二次曲线,其中,使用QuadCurvel2D.Float类创建更节省内存空间。