正文

Java图形与文本(19)

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


实例019  斜切图形

实例说明

本实例演示在Java中绘制图形时,如何对图形进行斜切。运行程序,单击窗体上的“上斜切”按钮,可以实现对矩形进行向上斜切的操作,效果如图1.19所示,用户还可以通过单击窗体上的“下斜切”和“还原”按钮,对窗体上的图形进行向下斜切和还原等操作。

关键技术

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

使用Graphics2D类的shear()方法,可以实现图形的斜切,该方法的定义如下:

public abstract void shear(double shx, double shy)

参数说明

? shx:在正X轴方向移动坐标的乘数,它可以作为相应y坐标的函数。

? shy:在正Y轴方向移动坐标的乘数,它可以作为相应x坐标的函数。

设计过程

(1)新建一个项目。

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

(3)在ShearShapeFrame窗体类中,创建内部面板类ShearShapePanel,并重写JComponent类的paint()方法,在该方法中使用Graphics2D类的shear()方法斜切图形。

(4)将内部面板类ShearShapePanel的实例,添加到窗体类ShearShapeFrame的内容面板上,用于在窗体上显示斜切后的图形,代码如下:

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

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

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

        Rectangle2D.Float rect = new Rectangle2D.Float(120, 50, 80, 50); // 创建矩形对象

        BasicStroke stroke = new BasicStroke(10);  // 创建宽度是10的笔画对象

        g2.setStroke(stroke); // 设置笔画对象

        g2.clearRect(0, 0, 338, 230);   // 清除原有内容

        if (flag == 0) {

            g2.draw(rect); // 绘制原矩形

        } else if (flag == 1) {

            g2.shear(0.2,0.2); // 向下斜切

            g2.draw(rect); // 绘制矩形

        } else if (flag == 2) {

            g2.shear(-0.2,-0.2); // 向上斜切

            g2.draw(rect); // 绘制矩形

        }

    }

}

U 注意:上面代码中的flag是一个标记变量,当该变量的值为0时,图形还原到原来的位置;为1时,对图形进行向下斜切;为2时,对图形进行向上斜切。

秘笈心法

心法领悟019:任意调整斜切方向。

使用Graphics2D类的shear(double shx, double shy)方法可以对图形进行斜切,用户通过调整该方法的两个参数值,就可以任意调整斜切方向。

 


上一章目录下一章

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