|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
[java] graphics mi disegna sovrapposto!
allora ho un componente che estende JPanel e dovrebbe essere il "contenitore" di un immagine (BufferedImage).
questo componente lo uso dalla applicazione principale, inserito in una scrollpane, dove dovrei aprire diverse immagini (una per volta). Per ogni immagine creo sto coso e lo metto nella scrollpane...e fin qui tutto a posto. senonchè quando carico alcune (solo alcune non tutte) immagini il componente disegna più immagini, e lo stesso lo fa quando faccio zoom out! sto impazzendo! questo è il codice della classe in questione: Codice:
import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class ImageComponent extends JPanel implements MouseListener { private BufferedImage img; private int w; private int h; private int cw; private int ch; private int op; public ImageComponent(BufferedImage image) { this.addMouseListener(this); img = image; w = img.getWidth(); h = img.getHeight(); cw = w; ch = h; } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; AffineTransform at; AffineTransformOp aop; switch (op) { case 0: g.drawImage(img, 0, 0, null); break; case 1: at = AffineTransform.getScaleInstance(2, 2); aop = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC); g2.drawImage(img, aop, 0, 0); break; case 2: at = AffineTransform.getScaleInstance(0.5, 0.5); aop = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC); g2.drawImage(img, aop, 0, 0); break; default: } } public void zoomIn() { op = 1; } public void zoomOut() { op = 2; } public Dimension getPreferredSize() { return new Dimension(w, h); } public void mousePressed(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e)) { zoomIn(); } if (SwingUtilities.isRightMouseButton(e)) { zoomOut(); } repaint(); } public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
up
nessuno sà aiutarmi??? ![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Il problema penso proprio che sia nel recupero delle dimenzioni del componente!
nn conosco bene ma controllo che sia giusto utilizzare getPreferredSize ... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Sposta quello che hai messo in paint in paintComponent. Il paint non toccarlo che fa cose delicate.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:34.