实例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值。