A.Graphics类
Graphics
类是java.awt
包中的一个类,它用于在图形用户界面(GUI)或其他图形应用程序中进行绘制。该类通常与Component
的paint
方法一起使用,以在组件上进行绘制操作。
一些Graphics
类的常见用法和方法:
在组件上绘制图形:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;class MyPanel extends JPanel {@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 绘制矩形g.drawRect(50, 50, 100, 100);// 绘制填充的矩形g.setColor(Color.BLUE);g.fillRect(200, 50, 100, 100);}
}public class MyFrame extends JFrame {public MyFrame() {add(new MyPanel());setSize(300, 200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}public static void main(String[] args) {new MyFrame();}
}
B.Graphics2D类
Graphics2D
类是Java中java.awt
包中的一个类,它是Graphics
类的子类,提供了更丰富和高级的图形绘制功能。Graphics2D
类支持矢量图形和更高级的绘图操作,与Graphics
相比,它提供了更多的控制选项和更丰富的功能。
Graphics2D
类的一些常见用法
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;class MyPanel extends JPanel {@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 将Graphics对象转换为Graphics2D对象Graphics2D g2d = (Graphics2D) g;// 绘制直线g2d.drawLine(50, 50, 150, 150);// 绘制圆形g2d.setColor(Color.RED);g2d.drawOval(200, 50, 100, 100);}
}public class MyFrame extends JFrame {public MyFrame() {add(new MyPanel());setSize(300, 200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}public static void main(String[] args) {new MyFrame();}
}
C.绘制一个图像
可以使用Graphics
或Graphics2D
对象来绘制图像
D.绘制一个图形
例题1
例题2
绘制颜色与画笔属性
以使用Graphics
或Graphics2D
对象来绘制颜色和定义画笔属性
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;class ColorAndStrokePanel extends JPanel {@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 将Graphics对象转换为Graphics2D对象Graphics2D g2d = (Graphics2D) g;// 设置颜色g2d.setColor(Color.BLUE);// 绘制填充的矩形g2d.fillRect(20, 20, 80, 80);// 设置颜色g2d.setColor(Color.RED);// 设置画笔宽度g2d.setStroke(new BasicStroke(5));// 绘制矩形边框g2d.drawRect(120, 20, 80, 80);}
}public class ColorAndStrokeExample extends JFrame {public ColorAndStrokeExample() {add(new ColorAndStrokePanel());setSize(250, 150);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}public static void main(String[] args) {new ColorAndStrokeExample();}
}
设置颜色
使用 Color 类可以创建任意颜色的对象,不用担心平台是否支持该颜色,因为 Java 以跨平台和与硬件无关的方式支持颜色管理。创建 Color 对象的构造方法有如下两种:
Color col = new Color(int r, int g, int b)
Color col = new Color(int rgb)
设置画笔
Color
类提供了一组预定义的颜色常量,
这些预定义的颜色常量包括但不限于:
Color.RED
Color.GREEN
Color.BLUE
Color.YELLOW
Color.ORANGE
Color.PINK
Color.CYAN
Color.MAGENTA
Color.BLACK
Color.WHITE
Color.GRAY
Color.LIGHT_GRAY
Color.DARK_GRAY
绘制文本
Java绘图类也可以用来绘制文本内容,且可以在绘制设置字体的样式、大小等。
设置字体
可以使用Font
类来设置字体的样式、大小和其他属性
Font
类的构造函数接受三个参数:字体名称("Arial")、字体样式(Font.PLAIN
、Font.BOLD
、Font.ITALIC
、或它们的组合)、以及字体大小。- 使用
g2d.setFont(font)
方法来设置当前绘图上下文的字体。 g2d.drawString(text, x, y)
方法用于在指定位置绘制文本。
E.显示文字
例题3
F.显示图片
drawimage(lmage img, int x, int y, lmageObserver observer)
绘图类不仅可以绘制图形和文本,还可以使用 drawImage0方法将图片资源显示到绘图上下文中,而且可以实现各种特效处理,如图片的缩放、翻转等。有关图像处理的知识将在 19.6 节讲解,本节主要讲解如何显示图片。
例题4
G.图像处理
开发高级的桌面应用程序,必须掌握一些图像处理与动画制作的技术,如在程序中显示统计图,销售趋势图、动态按钮等
放大与缩小
drawmage(lmage img, int x, int y, int width, int height, lmageObserver observer)
使用了 drawImage0方法将图片以原始大小显示在窗体中,要想实现图的放大与缩小,则需要使用它的重载方法。
例题5
图像翻转
水平垂直翻转
图像旋转
图像旋转
theta 是指旋转的弧度
说明rotate0方法只接受旋转的弧度作为参数,可以使用 Math 类的 toRadians0)方法将角度转换为弧toRadians(方法接受角度值作为参数,返回值是转换完毕的孤度值。
rotate(double theta)
需要调用 Graphics2D 类的 rotate0方法,该方法将根据指定的弧度旋转图像。
图像的翻转
需要使用 drawImage0方法的另一个重载方法。
drawimage(lmage img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, lmageObserver observer