显示图片

绘图类不仅可以绘制图形和文本,还可以使用 drawImage() 方法将图片资源显示到绘图上下文中,而且可以实现各种特效处理,如图片的缩放、翻转等。有关图像处理的知识将在19.6节讲解,本节主要讲解如何显示图片。语法如下:

     drawImage(Image img, int x, int y, ImageObserver observer)

该方法将 img 图片显示在 x、y 指定的位置上。方法中涉及的参数及其说明如表19.4所示。

image 2024 03 06 10 32 57 815
Figure 1. 表19.4 drawImage()方法的参数说明

drawImage() 方法的使用与绘制文本的 drawString() 方法类似,唯一不同的是该方法需要指定要通知的图像观察者。

【例19.4】在窗体中显示照片(实例位置:资源包\TM\sl\19\4)

在整个窗体中显示图片,图片的大小保持不变。

import java.awt.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;

public class DrawImage extends JFrame {
	Image img;// 展示的图片

	public DrawImage() {
		try {
			img = ImageIO.read(new File("src/img.jpg"));// 读取图片文件
		} catch (IOException e) {
			e.printStackTrace();
		}
		setSize(440, 300); // 设置窗体大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭模式
		add(new CanvasPanel()); // 设置窗体面板为绘图面板对象
		setTitle("绘制图片"); // 设置窗体标题
	}

	class CanvasPanel extends JPanel {
		public void paint(Graphics g) {
			Graphics2D g2 = (Graphics2D) g;
			g2.drawImage(img, 0, 0, this); // 显示图片
		}
	}

	public static void main(String[] args) {
		new DrawImage().setVisible(true);
	}
}

运行结果如图19.13所示。

image 2024 03 06 10 34 21 157
Figure 2. 图19.13 显示图片的窗体

编程训练(答案位置:资源包\TM\sl\19\编程训练)

【训练7】照片浏览器 尝试在窗体中显示你自己的照片。

【训练8】相册浏览器 在一个窗体中并排显示两张照片。