正文

Java图形与文本(26)

Java开发实战1200例(第II卷) 作者:李钟尉


1.4 图形的合并运算

实例026  图形的加运算

实例说明

本实例演示在Java中如何实现图形的加运算,即取两个图形的并集。运行程序,将在窗体上显示进行加运算后的图形,效果如图1.26所示。

关键技术

本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的draw()方法和Area类来实现的,其中Area类用于封装图形对象,并通过add()方法对封装的图形对象进行加运算。

(1)使用Area类的构造方法封装图形对象,其构造方法的定义如下:

public Area(Shape s)

参数说明

s:是Area类封装的图形对象。

(2)使用Area类的add()方法对封装的图形对象进行加运算,该方法的定义如下:

public void add(Area rhs)

参数说明

rhs:与当前Area对象进行加运算的Area对象。

设计过程

(1)新建一个项目。

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

(3)在PlusOperationFrame窗体类中,创建内部面板类PlusOperationPanel,并重写JComponent类的paint()方法,在该方法中实现图形的加运算。

(4)将内部面板类PlusOperationPanel的实例,添加到窗体类PlusOperationFrame的内容面板上,用于在窗体上显示图形进行加运算后的效果,代码如下:

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

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

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

        Ellipse2D.Float ellipse1 = new Ellipse2D.Float(20, 70, 160, 60); // 创建椭圆对象

        Ellipse2D.Float ellipse2 = new Ellipse2D.Float(120, 20, 60, 160); // 创建椭圆对象

        Area area1 = new Area(ellipse1);    // 创建区域椭圆

        Area area2 = new Area(ellipse2);    // 创建区域椭圆

        area1.add(area2); // 两个区域椭圆进行加运算

        g2.draw(area1);   // 绘制加运算后的区域椭圆

        Ellipse2D.Float ellipse3 = new Ellipse2D.Float(200, 70, 160, 60); // 创建椭圆对象

        Ellipse2D.Float ellipse4 = new Ellipse2D.Float(250, 20, 60, 160); // 创建椭圆对象

        Area area3 = new Area(ellipse3); // 创建区域椭圆

        Area area4 = new Area(ellipse4); // 创建区域椭圆

        area3.add(area4); // 两个区域椭圆进行加运算

        g2.draw(area3);   // 绘制加运算后的区域椭圆

    }

}

秘笈心法

心法领悟026:实现多个图形的加运算。

要实现多个图形的加运算,可以先对两个图形进行加运算,然后再将运算得到的图形与其他图形进行加运算,从而实现多个图形的加运算。

 


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号