public abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。
-
Image img
要绘制的原始图像对象,就像你要复印的那张原始图片。 -
int x, int y
图像左上角在画布上的位置坐标。就像你要把复印的图片贴在纸上的哪个位置。 -
int width, int height
缩放后的图像宽度和高度。原始图像会被拉伸或压缩到这个尺寸,就像调整复印机的缩放比例。 -
Color bgcolor
图像的背景色。如果图像有透明部分,这些部分会显示为这个背景色。比如你复印一张带透明区域的图片,透明的地方就会显示这个颜色。 -
ImageObserver observer
一个监听器,用于跟踪图像加载进度。如果你不需要知道图像何时加载完成,可以传入null
。
返回值
true
:图像已完全加载并绘制false
:图像尚未完全加载,需要通过ImageObserver
接收后续通知import java.awt.BorderLayout; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class TestB extends JFrame{ TestB(){ super("测试图片缩放"); setBounds(600, 200, 600, 800); setDefaultCloseOperation(EXIT_ON_CLOSE); panelB panel = new panelB(); add(panel); } public static void main(String[] args) { // TODO Auto-generated method stub SwingUtilities.invokeLater(()->{ new TestB().setVisible(true); }); } private class panelB extends JPanel{ private int num = 0 ;//全局图片大小增量 JButton b1 ; JButton b2 ; JPanel p1; panelB(){ setLayout(new BorderLayout()); p1 = new JPanel(new GridLayout(1, 2)); b1 = new JButton("放大(+)"); b2 = new JButton("缩小(-)"); p1.add(b1);p1.add(b2); add(p1, BorderLayout.SOUTH); b1.addActionListener(e->{ num+=20; repaint(); }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub num-=20; repaint(); } }); } @Override protected void paintComponent(Graphics g) { // TODO Auto-generated method stub super.paintComponent(g); Image img = new ImageIcon("src//a1.png").getImage() ; int imgWidth=img.getWidth(this); int imgHight=img.getHeight(null);//参数是通知谁,现在不需要通知 ,随便写的 g.drawImage(img, 0, 0, imgWidth+num, imgHight+num,this); } } }