Revision 1726

View differences:

org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.impl/src/main/java/org/gvsig/raster/georeferencing/swing/impl/view/CanvasZone.java
21 21
 */
22 22
package org.gvsig.raster.georeferencing.swing.impl.view;
23 23

  
24
import java.awt.AlphaComposite;
24 25
import java.awt.Color;
25 26
import java.awt.Graphics;
26 27
import java.awt.Graphics2D;
27 28
import java.awt.event.MouseEvent;
28 29
import java.awt.event.MouseListener;
29 30
import java.awt.event.MouseMotionListener;
31
import java.awt.geom.AffineTransform;
30 32
import java.awt.geom.Point2D;
31 33
import java.awt.geom.Rectangle2D;
32 34
import java.awt.image.BufferedImage;
......
95 97
     */
96 98
    private ViewEvent              viewEvent            = null;
97 99
    
100
    private AffineTransform        panAT                = new AffineTransform();
101
    //private BufferedImage          draggedImage         = null;
102
    
98 103
    /**
99 104
	 * Asigna los par?metros de dibujado
100 105
	 * @param img Buffer con un ?rea de datos
......
322 327
		Rectangle2D ext = getCanvasExtent(w, h, scale);
323 328
		
324 329
		if(lastImage == null || !equal(lastExtent, ext)) { 
325
			lastImage = new BufferedImage((int)w, (int)h, BufferedImage.TYPE_INT_RGB);
330
			lastImage = new BufferedImage((int)w, (int)h, BufferedImage.TYPE_INT_ARGB);
326 331
			lastImageWithLayers = new BufferedImage((int)w, (int)h, BufferedImage.TYPE_INT_RGB);
332
		} else if(!panAT.isIdentity()) {
333
			//Cuando se hace un Pan se dibuja el fondo y un imagen superpuesta transparente
334
			g.drawImage(lastImageWithLayers, 0, 0, null);
335
			((Graphics2D)g).transform(panAT);
336
			AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.4f);
337
			((Graphics2D)g).setComposite(composite);
338
			g.drawImage(lastImage, 0, 0, null);
339
			return;
327 340
		}
328
				
341

  
329 342
		if(clear) {
330 343
			g.setColor(backgroundColor);
331 344
			g.fillRect(0, 0, w, h);
......
617 630
	public void setForceRequest(boolean forceRequest) {
618 631
		this.forceRequest = forceRequest;
619 632
	}
633
	
634
	/*public BufferedImage getLastBufferedImage() {
635
		return lastImage;
636
	}*/
637
	
638
	public AffineTransform getAffineTransform() {
639
		return panAT;
640
	}
620 641
}
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.impl/src/main/java/org/gvsig/raster/georeferencing/swing/impl/tool/PanTool.java
25 25
import java.awt.event.MouseEvent;
26 26
import java.awt.event.MouseListener;
27 27
import java.awt.event.MouseMotionListener;
28
import java.awt.geom.AffineTransform;
28 29
import java.awt.geom.Point2D;
29 30
import java.awt.geom.Rectangle2D;
30 31

  
......
94 95
	 * Dibujado del cuadro con el ?rea a hacer zoom.
95 96
	 */
96 97
	public void mouseDragged(MouseEvent e) {
98
		if(isActive()) {
99
			double endX = e.getX() - initPoint.getX();
100
			double endY = e.getY() - initPoint.getY();
101
			AffineTransform at = canvas.getAffineTransform();
102
			at.setToTranslation(endX, endY);
103
			canvas.repaint();
104
		}
97 105
	}
98 106

  
99 107
	/*
......
102 110
	 */
103 111
	public void mouseReleased(MouseEvent e) {
104 112
		if(isActive()) {
113
			canvas.getAffineTransform().setToIdentity();
105 114
			Point2D endPoint = e.getPoint();
106 115
			double x = initPoint.getX() - endPoint.getX();
107 116
			double y = initPoint.getY() - endPoint.getY();

Also available in: Unified diff