[Java] 移动滑块改变图片的大小,----实现图片的动态缩放 →→→→→进入此内容的聊天室

来自 , 2019-08-22, 写在 Java, 查看 106 次.
URL http://www.code666.cn/view/08040837
  1. import java.awt.BorderLayout;
  2. import java.awt.Canvas;
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.Toolkit;
  6. import java.net.URL;
  7.  
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. import javax.swing.JSlider;
  11.  
  12. public class ImageZoom extends JFrame {
  13.  
  14.         Image img;
  15.         private JPanel contentPanel = null;
  16.         private JSlider jSlider = null;
  17.         private int imgWidth, imgHeight;
  18.         private Canvas canvas = null;
  19.        
  20.        
  21.        
  22.         // 主方法
  23.         public static void main(String[] args) {
  24.                 new ImageZoom().setVisible(true);
  25.         }
  26.        
  27.        
  28.         /**
  29.          * 构造方法
  30.          */
  31.         public ImageZoom() {
  32.                 initialize(); // 调用初始化方法
  33.         }
  34.        
  35.        
  36.         /**
  37.          *  界面初始化方法
  38.          */
  39.         private void initialize() {
  40.                 URL imgUrl = ImageZoom.class.getResource("flower.jpg");// 获取图片资源的路径
  41.                 img = Toolkit.getDefaultToolkit().getImage(imgUrl);// 获取图片资源
  42.                 canvas = new MyCanvas();
  43.                 this.setBounds(100, 100, 800, 600); // 设置窗体大小和位置
  44.                 this.setContentPane(getContentPanel()); // 设置内容面板
  45.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭模式
  46.                 this.setTitle("绘制图片"); // 设置窗体标题
  47.         }
  48.        
  49.        
  50.         /**
  51.          * 内容面板的布局
  52.          * @return
  53.          */
  54.         private JPanel getContentPanel() {
  55.                 if (contentPanel == null) {
  56.                         contentPanel = new JPanel();
  57.                         contentPanel.setLayout(new BorderLayout());
  58.                         //添加到JPanel面板中
  59.                         contentPanel.add(getJSlider(), BorderLayout.SOUTH);
  60.                         //添加到JPanel面板中
  61.                         contentPanel.add(canvas, BorderLayout.CENTER);
  62.                 }
  63.                 return contentPanel;
  64.         }
  65.        
  66.        
  67.         /**
  68.          * 获取滑块组件
  69.          *通过改变滑块组件的值。来重绘图片的缩放大小
  70.          * @return
  71.          */
  72.         private JSlider getJSlider() {
  73.                 if (jSlider == null) {
  74.                         jSlider = new JSlider();
  75.                         jSlider.setMaximum(1000);
  76.                         jSlider.setValue(80);
  77.                         jSlider.setMinimum(10);
  78.                        
  79.                         //添加事假监听
  80.                         jSlider.addChangeListener(new javax.swing.event.ChangeListener() {
  81.                                 public void stateChanged(javax.swing.event.ChangeEvent e) {
  82.                                         //重绘
  83.                                         canvas.repaint();
  84.                                 }
  85.                         });
  86.                 }
  87.                 System.out.println(jSlider);
  88.                 return jSlider;
  89.         }
  90.         /**
  91.          *
  92.          * @author Administrator
  93.          *
  94.          */
  95.         public class MyCanvas extends Canvas {
  96.                
  97.                 public void paint(Graphics g) {
  98.                         int newW = 0, newH = 0;
  99.                         imgWidth = img.getWidth(this); // 获取图片宽度
  100.                         imgHeight = img.getHeight(this); // 获取图片高度
  101.                         float value = jSlider.getValue();// 滑块组件的取值
  102.                         newW = (int) (imgWidth * value / 100);// 计算图片放大后的宽度
  103.                         newH = (int) (imgHeight * value / 100);// 计算图片放大后的高度
  104.                         g.drawImage(img, 0, 0, newW, newH, this);// 绘制指定大小的图片
  105.                 }
  106.         }
  107. }

回复 "移动滑块改变图片的大小,----实现图片的动态缩放"

这儿你可以回复上面这条便签

captcha