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) 回复
没有---改变滑块前的图片
改变滑块后的图片
回复评论