各位高手,我做了一个界面,现在想实现图片放大功能,即按放大按钮后,鼠标变成放大图标形,点击图片时,以此点为中心实现图片放大功能,谢谢啦!
解决方案 »
- 关于java字符串补全长度的问题
- 如何让子线程执行完了再继续执行main线程
- 用JavaServerSocket开发多人联机棋牌游戏服务器端,大概能撑多少人?
- 讨论:java调用windows 下dos命令wmic的奇怪现象
- 怎么在Session失效前做一些操作??????????????
- DefaultTableModel中的data数组值变化了,怎么更新JTable这个视图。
- 访问父类的private方法
- 论坛中如何显示回复帖子数
- 我在安装apache时80端口被占用怎么办
- 怎样把从文件中读出的字符串写到一个String里面去?
- 初学者求助谢谢
- Swing中 lookandfeel皮肤如何设置??
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;import javax.swing.JFrame;
import javax.swing.JPanel;public class TryImageI extends JFrame{
public JPanel jp=new JPanel(){
Image img=Toolkit.getDefaultToolkit().getImage("image/2.jpg");
Image img1=img.getScaledInstance(141, 102, Image.SCALE_SMOOTH);
Image img2=img.getScaledInstance(70, 53, Image.SCALE_SMOOTH);
public void paint(Graphics g){
g.drawImage(img,10,10,this);
g.drawImage(img1, 300,10,this );
g.drawImage(img2, 460, 10,this);
}
};
public TryImageI(){
this.add(jp);
this.setTitle("图像缩放演示");
this.setBounds(100,100,550,260);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[]args){
new TryImageI();
}}
里面也有.java的源文件啊。貌似那个针对2D图形的比较多。也值得参考。
* 改变图片的大小
*
* @param source
* 源文件
* @param targetW
* 目标长
* @param targetH
* 目标宽
* @return
*/
public static BufferedImage resize(BufferedImage source, int targetW,
int targetH) {
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
// 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
// 则将下面的if else语句注释即可
if (sx > sy) {
sx = sy;
targetW = (int) (sx * source.getWidth());
} else {
sy = sx;
targetH = (int) (sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { // handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW,
targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else {
target = new BufferedImage(targetW, targetH, type);
}
Graphics2D g = target.createGraphics();
// smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}
import java.awt.Image;
import javax.swing.JFrame;import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Pictureplay2 extends JFrame { private Image image;
static Button btn1=new Button("放大");
static Button btn2=new Button("缩小");
static int length=300;
static int width=300;
public Pictureplay2()
{
image=Toolkit.getDefaultToolkit().getImage("小公主.jpg");
this.setLayout(null);
this.setSize(800,600);
this.setTitle("图片缩放");
btn1.setBounds(600, 300, 40,20);
btn2.setBounds(600, 340, 40,20);
btn1.addActionListener(new fangda());
this.add(btn1);this.add(btn2);
} public void paint( Graphics g)
{
g.drawImage(image,20,20,length,width,this);
} public static void main(String[] args)
{
new Pictureplay2().setVisible(true); }
static class fangda implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals("放大"))
{width=width+20;
length=length+20;
}
}
}}写到这里来了,不知道再怎么写了
import java.awt.Image;import javax.swing.JFrame;import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;public class Pictureplay2 extends JFrame { private Image image;
Button btn1 = new Button("放大"); Button btn2 = new Button("缩小");
int imgwidth = 200;
int imgheight = 200; public Pictureplay2() {
image = Toolkit.getDefaultToolkit().getImage("c:/test.jpg");
this.setLayout(null);
this.setSize(800, 600);
this.setTitle("图片缩放");
btn1.setBounds(600, 300, 40, 20);
btn2.setBounds(600, 340, 40, 20);
this.add(btn1);
this.add(btn2);
final Pictureplay2 pic=this;
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
imgwidth+=50;
imgheight+=50;
pic.repaint();
}
});
btn2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
imgwidth-=50;
imgheight-=50;
pic.repaint();
}
});
} public void paint(Graphics g){
g.clearRect(0, 0, imgwidth+50, imgwidth+50);
g.drawImage(image, 0, 0, imgwidth, imgheight, this);
} public static void main(String[] args) {
new Pictureplay2().setVisible(true);
}
}