图片放缩

来源:互联网 发布:数据类型转化php 编辑:程序博客网 时间:2024/06/09 19:54
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import  javax.swing.JScrollPane;
import  javax.swing.JTree;
import  javax.swing.BoxLayout;
import  javax.swing.tree.TreePath;
import  javax.swing.tree.DefaultMutableTreeNode;
import  javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.*;  
import javax.swing.event.*;  
  import java.awt.event.*; 
public class Anniu extends JFrame {


//private static final long serialVersionUID = 1L;


private JLabel label = null;
private ImageIcon zp;
  // private ZoomPanel zp;  
//
public Anniu() {
JFrame frame=new JFrame();
frame.setSize(800, 600);
     frame.setLayout(null);
     zp = new ImageIcon("hy.jpg");
      label = new JLabel(zp);

label.setBounds(100, 100, 400, 400);
   frame.add(label); 

 addMouseWheelListener(new MouseWheelListener(){  
            public void mouseWheelMoved(MouseWheelEvent e){  
                  
                //滚轮向前滑动  放大  
                if(e.getWheelRotation() < 0){  
                    //label.enlargeImg();  
                }  
                  
                //滚轮向后滑动  缩小  
                else{  
                   // label.reduceImg();  
                }  
            }  
        });  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
frame.setVisible(true);
}





public static void main(String[] args){
new Anniu();
}
class ZoomPanel extends JPanel {  
    private ImageIcon ii;  
    private Dimension frameSize;  
    private int x, y, width, height;//图片的坐标、缩放的size  
  
    public ZoomPanel(Dimension fs, String imgPath) {  
       setBackground(Color.WHITE);  
          
        this.frameSize = fs;  
  
        ii = new ImageIcon(imgPath);  
  
        width = ii.getIconWidth();  
        height = ii.getIconHeight();  
          
        setImgPos();  
    }  
      
    //设定x、y坐标  
    public void setImgPos() {  
        x = (frameSize.width - width)/2 ;  
        y = (frameSize.height - height)/2;  
    }  
      
    //放大  
    public void enlargeImg(){  
        if(width >= ii.getIconWidth() * 2){  
            return;  
        }  
        if(height >= ii.getIconHeight() * 2){  
            return;  
        }  
          
        width += width / 9; //这里为什么是除以9呢  这个是数学问题  留给大家自己想吧  要是不明白,可以留言  
        height += height / 9;  
        setImgPos();  
          
        repaint();  
    }     
      
    //缩小  
    public void reduceImg(){  
        if(width <= ii.getIconWidth() / 5){  
            return;  
        }  
        if(height <= ii.getIconHeight() / 5){  
            return;  
        }  
          
        width -= width / 10;  
        height -= height / 10;  
        setImgPos();  
          
        repaint();  
    }  
      
    //重绘  
    public void paintComponent(Graphics g) {  
        super.paintComponent(g);  
          
        g.drawImage(ii.getImage(), x, y, width, height, null);  
    }  
}
}
原创粉丝点击