java如何实现图片拖动,放大缩小,旋转。

Python040

java如何实现图片拖动,放大缩小,旋转。,第1张

这个只是实现了移动,你参考以下吧 !

public class MoveImage {

static int x,y

private static int num=0

private static Icon icon=null

public static void main(String[] args) throws Exception{

JFrame f = new JFrame()

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

f.getContentPane().setLayout(null)//这个要设置成 null

//图片

icon = new ImageIcon("d:/test.gif")//d:/test.gif本地一张图片

JLabel l = new JLabel(icon)//创建具有指定图像的 JLabel 实例。

l.setSize(icon.getIconWidth(),icon.getIconHeight())//设置面板的宽度和高度

l.setBorder(BorderFactory.createLineBorder(Color.red))//给图片加上红色外框

f.getContentPane().add(l)

f.setSize(900,700)

f.setVisible(true)

l.addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent e){

x=e.getX()

y=e.getY()

}

})

l.addMouseMotionListener(new MouseMotionListener(){

public void mouseDragged(MouseEvent e) {

JLabel l = (JLabel)e.getSource()

l.setLocation(l.getX()+e.getX()-x,l.getY()+e.getY()-y)

}

public void mouseMoved(MouseEvent e) {}

})

}

img.getScaledInstance(50, 50, Image.SCALE_DEFAULT)

即使已经完全加载了初始源图像,新的 Image 对象也可以被异步加载。

所以一般不直接用,可以再初始化一下让其加载,注释那两行相当于,让缩放后的image加载。其实还可以这样。

Image tempImg = new ImageIcon(img).getImage()

g.drawImage(tempImg, 0, 0, tempImg.getHeight(null), tempImg.getHeight(null), this)

 

 

如果用 JLabel 显示图像,稍微覆盖它的 paintComponent 方法后根据键盘输入调整它的尺寸既可。

比如:

import javax.swing.*

import java.awt.*

import java.awt.event.*

class C extends JFrame {

    public static void main(String[] args) { new C()}

    public C() {

        final JLabel imgView = new JLabel(new ImageIcon(你的图片路径)) {

            public void paintComponent(Graphics g) {

                super.paintComponent(g)

                g.drawImage(((ImageIcon)getIcon()).getImage(), 0, 0, getWidth(), getHeight(), null)

            }

        }

        addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent e) {

                double zoomFactor = e.getKeyCode() == KeyEvent.VK_UP    ? 1.01 :

                                    e.getKeyCode() == KeyEvent.VK_DOWN  ?  .99 : 1

                imgView.setSize((int)(imgView.getWidth() * zoomFactor),

                                (int)(imgView.getHeight() * zoomFactor))

            }

        })

        add(imgView)

        setSize(800, 600)

        setVisible(true)

        setDefaultCloseOperation(EXIT_ON_CLOSE)

    }

}