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 {
@Override
protected 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();
}
}
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 {
@Override
protected 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();
}
}
可以使用Graphics
或Graphics2D
对象来绘制图像
例题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 {
@Override
protected 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)
方法用于在指定位置绘制文本。例题3
drawimage(lmage img, int x, int y, lmageObserver observer)
绘图类不仅可以绘制图形和文本,还可以使用 drawImage0方法将图片资源显示到绘图上下文中,而且可以实现各种特效处理,如图片的缩放、翻转等。有关图像处理的知识将在 19.6 节讲解,本节主要讲解如何显示图片。
例题4
开发高级的桌面应用程序,必须掌握一些图像处理与动画制作的技术,如在程序中显示统计图,销售趋势图、动态按钮等
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