各位高手,我做了一个界面,现在想实现图片放大功能,即按放大按钮后,鼠标变成放大图标形,点击图片时,以此点为中心实现图片放大功能,谢谢啦!

解决方案 »

  1.   

    看看这个,也许就会了:
    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();
    }}
      

  2.   

    java那个自带的demo,demo\jfc\Java2D\Java2Demo.jar
    里面也有.java的源文件啊。貌似那个针对2D图形的比较多。也值得参考。
      

  3.   

    /**
     * 改变图片的大小
     * 
     * @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;
    }
      

  4.   

    study hard  ,  to be No. 1
      

  5.   

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


    }
    }}写到这里来了,不知道再怎么写了
      

  6.   

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