用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

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

2017-04-24 作者: 陆痴举报

[java]代码库

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
 
public class ImageZoom extends JFrame {
 
    Image img;
    private JPanel contentPanel = null;
    private JSlider jSlider = null;
    private int imgWidth, imgHeight;
    private Canvas canvas = null;
     
     
     
    // 主方法
    public static void main(String[] args) {
        new ImageZoom().setVisible(true);
    }
     
     
    /**
     * 构造方法
     */
    public ImageZoom() {
        initialize(); // 调用初始化方法
    }
     
     
    /**
     *  界面初始化方法
     */
    private void initialize() {
        URL imgUrl = ImageZoom.class.getResource("flower.jpg");// 获取图片资源的路径
        img = Toolkit.getDefaultToolkit().getImage(imgUrl);// 获取图片资源
        canvas = new MyCanvas();
        this.setBounds(100, 100, 800, 600); // 设置窗体大小和位置
        this.setContentPane(getContentPanel()); // 设置内容面板
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭模式
        this.setTitle("绘制图片"); // 设置窗体标题
    }
     
     
    /**
     * 内容面板的布局
     * @return
     */
    private JPanel getContentPanel() {
        if (contentPanel == null) {
            contentPanel = new JPanel();
            contentPanel.setLayout(new BorderLayout());
            //添加到JPanel面板中
            contentPanel.add(getJSlider(), BorderLayout.SOUTH);
            //添加到JPanel面板中
            contentPanel.add(canvas, BorderLayout.CENTER);
        }
        return contentPanel;
    }
     
     
    /**
     * 获取滑块组件
     *通过改变滑块组件的值。来重绘图片的缩放大小
     * @return
     */
    private JSlider getJSlider() {
        if (jSlider == null) {
            jSlider = new JSlider();
            jSlider.setMaximum(1000);
            jSlider.setValue(80);
            jSlider.setMinimum(10);
             
            //添加事假监听
            jSlider.addChangeListener(new javax.swing.event.ChangeListener() {
                public void stateChanged(javax.swing.event.ChangeEvent e) {
                    //重绘
                    canvas.repaint();
                }
            });
        }
        System.out.println(jSlider);
        return jSlider;
    }
    /**
     *
     * @author Administrator
     *
     */
    public class MyCanvas extends Canvas {
         
        public void paint(Graphics g) {
            int newW = 0, newH = 0;
            imgWidth = img.getWidth(this); // 获取图片宽度
            imgHeight = img.getHeight(this); // 获取图片高度
            float value = jSlider.getValue();// 滑块组件的取值
            newW = (int) (imgWidth * value / 100);// 计算图片放大后的宽度
            newH = (int) (imgHeight * value / 100);// 计算图片放大后的高度
            g.drawImage(img, 0, 0, newW, newH, this);// 绘制指定大小的图片
        }
    }
}

[代码运行效果截图]


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


网友评论    (发表评论)

共11 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...