Java图形与文本(7)

秘笈心法

心法领悟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类创建更节省内存空间。

 

读书导航