
package com.han;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
@SuppressWarnings("serial")
public class Graphics_10 extends JFrame {
JSlider slider;
Canvas canvas;
public Graphics_10() {
// TODO Auto-generated constructor stub
Container container = getContentPane();
slider = new JSlider();
canvas = new MyCanvas();
container.add(canvas, BorderLayout.CENTER);
container.add(slider, BorderLayout.SOUTH);
/* configure JSlider */
slider.setMinimum(1);
slider.setMaximum(1000);
slider.setValue(100);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
canvas.repaint(); // the variable referred in the inner-cached class must be "final"
}
});
}
/**
* Canvas 会闪烁,当其上的图像缩放时。
* @author HAN
*
*/
class MyCanvas extends Canvas {
@Override
public void paint(Graphics g) {
int currentValue = slider.getValue();
URL resource = Graphics_10.class.getResource("/images/Lighthouse.jpg");
Image img = Toolkit.getDefaultToolkit().getImage(resource);
int newWidth = img.getWidth(this) * currentValue / 100;
int newHeight = img.getHeight(this) * currentValue / 100;
g.drawImage(img, 0, 0, newWidth, newHeight, canvas);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Graphics_10 frame = new Graphics_10();
frame.setTitle("图像缩放");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setBounds(0, 0, d.width, d.height);
frame.setVisible(true);
}
}