[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);// 绘制指定大小的图片
}
}
}
[代码运行效果截图]
中级程序员
by: 陆痴 发表于:2017-04-24 16:11:44 顶(0) | 踩(0) 回复
没有---改变滑块前的图片
改变滑块后的图片
回复评论