Java图形与文本(23)

实例023  绘制艺术图案

实例说明

本实例演示如何使用坐标轴平移、图形旋转和获得随机数等技术绘制艺术图案。运行程序,将在窗体上绘制艺术图案,效果如图1.23所示。

关键技术

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

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

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

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

(4)使用Graphics2D类的draw()方法,在指定位置绘制椭圆。

设计过程

(1)新建一个项目。

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

(3)在ArtDesignFrame窗体类中,创建内部面板类ArtDesignPanel,并重写JComponent类的paint()方法,在该方法中实现艺术图案的绘制。

(4)将内部面板类ArtDesignPanel的实例,添加到窗体类ArtDesignFrame的内容面板上,用于在窗体上显示艺术图案,代码如下:

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

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

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

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

        Random random = new Random(); // 创建随机数对象

        g2.translate(160, 90); // 平移坐标轴

        int R = random.nextInt(256); // 随机产生颜色的R值

        int G = random.nextInt(256); // 随机产生颜色的G值

        int B = random.nextInt(256); // 随机产生颜色的B值

        Color color = new Color(R,G,B); // 创建颜色对象

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

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

        int i=0;

        while (i<100){

            R = random.nextInt(256); // 随机产生颜色的R值

            G = random.nextInt(256); // 随机产生颜色的G值

            B = random.nextInt(256); // 随机产生颜色的B值

            color = new Color(R,G,B); // 创建新的颜色对象

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

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

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

            i++;

        }

    }

}

秘笈心法

心法领悟023:随机获得颜色的RGB值。

使用Random类的实例生成伪随机数流,并使用该类的nextInt(int n)方法,产生一个0(包含)~n(不包含)之间的随机整数,由于颜色的RGB值是0~255之间的整数值,所以为nextInt(int n)方法的参数n传递256,这样就可以随机产生一个0~255之间的整数,表示颜色RGB值。

读书导航