
drawImage方法是用来将图片绘制到目标上drawImagepublic abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)绘制指定图像中已缩放到适合指定矩形内部的图像。 图像绘制在此图形上下文坐标空间的指定矩形内部,如果需要,则进行缩放。以指定的背景色绘制透明像素。此操作等同于用给定颜色填充指定图像宽度和高度的矩形,然后在其上绘制图像,但此操作效率更高。 此方法在任何情况下都立刻返回,甚至在整个图像没有针对当前输出设备完成缩放、抖动或转换的情况下也是如此。如果当前的输出表示形式尚未完成,则 drawImage 返回 false。随着更多的图像可用,加载图像的进程将通知指定的图像观察者。 缩放的图像不一定立刻是可用的,因为已经为此输出设备构造了非缩放的图像。每种大小的图像可以被分别缓存,并由各自图像生产序列中的原始数据生成。 参数:img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。x - x 坐标。y - y 坐标。width - 矩形的宽度。height - 矩形的高度。bgcolor - 在图像非透明部分下绘制的背景色。observer - 当转换了更多图像时要通知的对象。一个简单的例子(drawImage方法有很多变体 这里用的是最简单的一个)import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.SwingUtilities;public class GraphiscTest extends JLabel { private static final long serialVersionUID = -1985867978449397006L; public GraphiscTest() { super(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); BufferedImage image = new BufferedImage(150, 150, BufferedImage.TYPE_3BYTE_BGR); Graphics2D g2d = image.createGraphics(); g2d.setBackground(Color.GRAY); g2d.clearRect(0, 0, getWidth(), getHeight()); g2d.drawString("Default Font", 10, 20); g2d.drawLine(10, 22, 80, 22); g2d.setFont(g.getFont().deriveFont(Font.BOLD | Font.ITALIC, 24f)); g2d.setColor(Color.WHITE); g2d.setStroke(new BasicStroke(10f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)); g2d.drawString("New Font", 10, 50); g2d.drawLine(10, 57, 120, 57); g2d.dispose(); g.drawImage(image, 0, 0, null); } public static void main(String args[]) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame(); frame.setLayout(new BorderLayout()); frame.add(new GraphiscTest(), BorderLayout.CENTER); frame.setSize(320, 240); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); }}
