public void mouseDragged(MouseEvent e) 
{
             x2 = e.getX();  
             y2 = e.getY();  
      
             BufferedImage bi = new BufferedImage(im1.getWidth(null), im1.getHeight(null), BufferedImage.TYPE_INT_RGB);  
             Graphics2D g = (Graphics2D)bi.getGraphics();  
                
             g.drawImage(im1, 0,0, null); 
             g.setColor(Color.RED);            
             g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2 - x1) , Math.abs(y2 - y1));   
             g.dispose();  
        
             Graphics g2 = jl.getGraphics();  
             g2.drawImage(bi,0,0, null);  
              g2.dispose();  
这里监控鼠标,在原图形上画矩形,为什么画的矩形最上面都是在屏幕最顶上
x1,y1是鼠标按下的坐标
我明明drawRect的参数是以按下和Dragged的坐标的最小值啊  

解决方案 »

  1.   

    这样贴代码才有人回答!public void mouseDragged(MouseEvent e)  
    {
    x2 = e.getX();   
    y2 = e.getY();   
      
    BufferedImage bi = new BufferedImage(im1.getWidth(null), im1.getHeight(null), BufferedImage.TYPE_INT_RGB);   
    Graphics2D g = (Graphics2D)bi.getGraphics();   
      
    g.drawImage(im1, 0,0, null);  
    g.setColor(Color.RED);   
    g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2 - x1) , Math.abs(y2 - y1));   
    g.dispose();   
      
    Graphics g2 = jl.getGraphics();   
    g2.drawImage(bi,0,0, null);   
    g2.dispose(); 
      

  2.   

    代码贴的不全  x1,y1是什么?im1在哪?
      

  3.   


    ”为什么画的矩形最上面都是在屏幕最顶上“BufferedImage bi = new BufferedImage(im1.getWidth(null), im1.getHeight(null), BufferedImage.TYPE_INT_RGB); 这个 im1.getWidth(null),  没贴全代码吧BufferedImage bi = new BufferedImage(20,30,BufferedImage.TYPE_INT_RGB);