0

我尝试创建一个图像查看程序并在 Java Image 的放大和缩小中遇到问题:D

我创建了一个 JPanel 并使用 BufferedImage 在我的计算机中显示图像。单击按钮后,它应该是 zoom 。但是这里的问题是,我重载了 JPanel 中的 paintComponent() 方法来显示我想要的图像。在谷歌搜索后,我认为我应该使用 Graphic2D 来处理这个问题。关注这篇文章,这条线

Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, newImageWidth , newImageHeight , null);

应该放在重载的方法paintComponent()中。但是,在我的情况下,我想在单击按钮后缩放图像,那么,我如何访问 paintComponent() 来进行缩放?

public class MiddlePanel extends JPanel {
private BufferedImage img;
private JButton jbtZoom = new JButton("Zoom");

public MiddlePanel(int width){            

    img = ImageIO.read(new FileInputStream(new File("C:\\Picture\\pic1.jpg")));

    this.setPreferredSize(new Dimension(800,460));        
}

public void paintComponent(Graphics g) {
    g.drawImage(img......);
}

public void addComponentActionListener(){
    jbtZoom.addActionListener(new ActionListener{
        public void actionPerformed(){
            //What should I do in here to zoom the image....
        }
    });
}

感谢您的帮助!

4

1 回答 1

3

您需要像这样更改您的设计:

  • 将您的缩放状态存储在一个变量中,然后您覆盖的paintComponent 方法应该查看该变量以决定是否/缩放多少。
  • 您的 ActionListener 将更新变量,然后在面板上调用 repaint()。
于 2013-10-18T17:17:32.230 回答