Java图形与文本(24)

实例024  绘制花瓣

实例说明

本实例演示如何使用坐标轴平移和图形旋转等技术绘制花瓣。运行程序,将在窗体上绘制花瓣,效果如图1.24所示。

关键技术

本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的translate()、setColor()、rotate()和fill()方法来实现的。

(1)使用Graphics2D类的translate()方法,将坐标轴平移到指定点。

(2)使用Graphics2D类的setColor()方法,设置颜色。

(3)使用Graphics2D类的rotate()方法,旋转绘图上下文。

(4)使用Graphics2D类的fill()方法,在指定位置绘制带填充色的椭圆。

设计过程

(1)新建一个项目。

(2)在项目中创建一个继承JFrame类的DrawFlowerFrame窗体类。

(3)在DrawFlowerFrame窗体类中,创建内部面板类DrawFlowerPanel,并重写JComponent类的paint()方法,在该方法中实现花瓣的绘制。

(4)将内部面板类DrawFlowerPanel的实例,添加到窗体类DrawFlowerFrame的内容面板上,用于在窗体上显示绘制的花瓣,代码如下:

class DrawFlowerPanel extends JPanel {  // 创建内部面板类

    public void paint(Graphics g) {      // 重写paint()方法

        Graphics2D g2 = (Graphics2D)g;  // 获得Graphics2D对象

        g2.translate(drawFlowerPanel.getWidth() / 2, drawFlowerPanel.getHeight() / 2); // 平移坐标轴

        // 绘制绿色花瓣

        Ellipse2D.Float ellipse = new Ellipse2D.Float(30, 0, 70, 20); // 创建椭圆对象

        Color color = new Color(0,255,0); // 创建颜色对象

        g2.setColor(color); // 指定颜色

        g2.fill(ellipse); // 绘制椭圆

        int i=0;

        while (i<8){

            g2.rotate(30); // 旋转画布

            g2.fill(ellipse); // 绘制椭圆

            i++;

        }

        // 绘制红色花瓣

        ellipse = new Ellipse2D.Float(20, 0, 60, 15); // 创建椭圆对象

        color = new Color(255,0,0); // 创建颜色对象

        g2.setColor(color); // 指定颜色

        g2.fill(ellipse); // 绘制椭圆

        i=0;

        while (i<15){

            g2.rotate(75); // 旋转画布

            g2.fill(ellipse); // 绘制椭圆

            i++;

        }

        // 绘制黄色花瓣

        ellipse = new Ellipse2D.Float(10, 0, 50, 15); // 创建椭圆对象

        color = new Color(255,255,0); // 创建颜色对象

        g2.setColor(color); // 指定颜色

        g2.fill(ellipse); // 绘制椭圆

        i=0;

        while (i<8){

            g2.rotate(30); // 旋转画布

            g2.fill(ellipse); // 绘制椭圆

            i++;

        }

        // 绘制红色中心点

        color = new Color(255, 0, 0); // 创建颜色对象

        g2.setColor(color); // 指定颜色

        ellipse = new Ellipse2D.Float(-10, -10, 20, 20); // 创建椭圆对象

        g2.fill(ellipse); // 绘制椭圆

    }

}

秘笈心法

心法领悟024:实现时钟的绘制。

利用图形旋转技术和坐标轴平移,可以实现时钟的绘制,具体方法是,通过线程或定时器控件,在指定的时间间隔内绕坐标轴分别旋转表示秒针、分针和时针的图形或图像,从而达到时钟显示时间的效果。

 

读书导航