用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...