Java图形与文本(18)

简介:     实例018  旋转图形 实例说明 本实例演示在Java中绘制图形时,如何对图形进行旋转。运行程序,单击窗体上的“顺时针”按钮,可以将图形顺时针旋转,效果如图1.18所示,用户还可以通过单击“逆时针”和“还原”按钮,对窗体上的图形进行逆时针旋转和还原等操作。
 

 

 

实例018  旋转图形

实例说明

本实例演示在Java中绘制图形时,如何对图形进行旋转。运行程序,单击窗体上的“顺时针”按钮,可以将图形顺时针旋转,效果如图1.18所示,用户还可以通过单击“逆时针”和“还原”按钮,对窗体上的图形进行逆时针旋转和还原等操作。

关键技术

 

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

使用Graphics2D类的rotate()方法,可以实现图形的旋转,该方法的定义如下:

public abstract void rotate(double theta, double x, double y)

参数说明

? theta:旋转的角度,以弧度为单位。

? x:旋转原点的x坐标。

w y:旋转原点的y坐标。

设计过程

(1)新建一个项目。

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

(3)在RotateShapeFrame窗体类中,创建内部面板类RotateShapePanel,并重写JComponent类的paint()方法,在该方法中使用Graphics2D类的rotate()方法旋转图形。

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

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

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

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

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

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

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

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

        if (flag == 0) {

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

        } else if (flag == 1) {

            g2.rotate(rotateValue); // 顺时针旋转

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

        } else if (flag == 2) {

            g2.rotate(rotateValue); // 逆时针旋转

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

        }

    }

}

U 注意:上面代码中的flag是一个标记变量,当该变量的值为0时,图形还原到原来的位置;为1时,对图形进行顺时针旋转;为2时,对图形进行逆时针旋转。rotateValue是与需要旋转角度对应的弧度值。

秘笈心法

心法领悟018:角度转换为弧度。

由于使用Graphics2D类的rotate()方法旋转图形时,是按弧度进行旋转的,因此,当给定的旋转值是角度时,需要将其转换为弧度。在Java中,可以使用Math类的toRadians(double angdeg)方法,将参数指定的角度angdeg转换为近似相等的弧度值。

目录
相关文章
|
6月前
|
安全 Java Spring
【Java用法】Java 过滤html标签获取纯文本信息
【Java用法】Java 过滤html标签获取纯文本信息
97 0
|
4月前
|
Java
Java文本进度条
Java文本进度条
|
2月前
|
Java Maven
java获取文件编码,jsoup获取html纯文本
java获取文件编码,jsoup获取html纯文本
12 0
|
3月前
|
算法 C++ Python
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
27 0
Java每日一练(20230430) 文本左右对齐、素数和、整数转英文表示
|
3月前
|
Java
Java PDF 相关 1、拷贝多个PDF到一个PDF,并且文件大小变小,文本等信息保留
1、合并多个PDF,并且文件变小,后面添加的文本信息保留
26 0
|
8月前
|
存储 Java
探索Java String:优雅处理文本数据
在Java编程世界中,字符串(String)是一种常见的数据类型,用于存储文本信息。字符串的处理在实际开发中经常涉及到循环操作,以便逐个处理字符串中的字符。本文将带您深入了解Java中对字符串的循环处理,包括循环遍历字符、字符串拼接、字符串分割等操作,助您优雅处理文本数据。
|
4月前
|
Java
Java读取文本文件的不同方式
Java读取文本文件的不同方式
62 1
|
5月前
|
安全 Java
Java读取文本文件
Java读取文本文件
|
6月前
|
自然语言处理 Java 关系型数据库
JSP文本相似性比较系统myeclipse开发mysql数据库web结构计算机java编程
JSP文本相似性比较系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发,采用两种比较常见的文本检测对比方法 编辑距离 和 余弦定理。
33 0
|
6月前
|
Java
Java生成图形验证码
Java生成图形验证码
315 3