使用缩放+滚动查看图像的免费Java Swing组件 - >通缉

时间:2014-12-06 17:39:35

标签: java swing

我似乎找不到可以用来轻松在JPanel中显示图像的Java Swing库,并允许用户滚动,平移和缩放。有任何想法吗?感谢。

我目前正在使用以下代码在JPanel中显示图像,但它非常基本。

我真的很想快速介绍缩放,滚动和平移功能。

    final BufferedImage img;

    try
    {
        img = ImageIO.read(image_file);

    }
    catch (IOException e)
    {
        throw new XCustomErrorClass("Could not open image file", e);
    }

    JPanel image_panel = new JPanel(new BorderLayout(0, 0)) 
    {
        protected void paintComponent(java.awt.Graphics g) 
        {
             super.paintComponent(g);
             g.drawImage(img.getScaledInstance(getWidth()-20,-1, Image.SCALE_FAST), 10, 10, this);

        };
    };

1 个答案:

答案 0 :(得分:2)

要进行滚动,请将面板放入JScrollPane。

对于缩放和平移,您可以根据鼠标侦听器中维护的某些变量转换paintComponent中的Graphics2D对象。像这样:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;

    // Backup original transform
    AffineTransform originalTransform = g2d.getTransform();

    g2d.translate(panX, panY);
    g2d.scale(zoom, zoom);

    // paint the image here with no scaling
    g2d.drawImage(img, 0, 0, null);

    // Restore original transform
    g2d.setTransform(originalTransform);
}