java图片放大

Helix333 2009-05-11 11:14:53
各位高手,我做了一个界面,现在想实现图片放大功能,即按放大按钮后,鼠标变成放大图标形,点击图片时,以此点为中心实现图片放大功能,谢谢啦!
...全文
1055 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwlym 2012-01-13
  • 打赏
  • 举报
回复
package 图片放大;

import java.awt.Button;

import java.awt.Graphics;
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);
}
}
yeyao001 2010-11-23
  • 打赏
  • 举报
回复
rtdfgdfgdfgdfg
LF768337821 2010-11-09
  • 打赏
  • 举报
回复
package play;



import java.awt.Button;

import java.awt.Graphics;
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;

}


}
}



}

写到这里来了,不知道再怎么写了
yunyouyou 2009-05-19
  • 打赏
  • 举报
回复
学习。
wennshuai 2009-05-19
  • 打赏
  • 举报
回复
不懂
chitu11 2009-05-17
  • 打赏
  • 举报
回复
study hard , to be No. 1
Ostroff 2009-05-16
  • 打赏
  • 举报
回复
蛮简单的,
顶1楼
lxc_fxn 2009-05-16
  • 打赏
  • 举报
回复
学习一下
wunan320 2009-05-15
  • 打赏
  • 举报
回复
路过看看
cuilike 2009-05-15
  • 打赏
  • 举报
回复
/**
* 改变图片的大小
*
* @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;
}
anson1216 2009-05-14
  • 打赏
  • 举报
回复
java那个自带的demo,demo\jfc\Java2D\Java2Demo.jar
里面也有.java的源文件啊。貌似那个针对2D图形的比较多。也值得参考。
anson1216 2009-05-14
  • 打赏
  • 举报
回复
搜藏了先
Mars27 2009-05-14
  • 打赏
  • 举报
回复
顶1楼
GeekZFZ 2009-05-11
  • 打赏
  • 举报
回复
看看这个,也许就会了:


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();
}

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧