Revision 1726
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