Visualizzazione dei risultati da 1 a 4 su 4

Discussione: aiuto con Path2D

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    37

    aiuto con Path2D

    qualcuno riesce a spiegarmi in modo semplice come funziona questa classe?

    codice:
    public class Whiteboard extends JPanel {
    	private String wb_name;
    
    
    	private Point start;
    	private Point stop;
    	private UserSession usersession;
    	private Shape shape;
    	private String stroke;
    	private Path2D path = new Path2D.Double();
    
    
    	public Whiteboard(String name, UserSession usersession) {
    		wb_name = name;
    		this.usersession = usersession;
    		setBackground(Color.white);
    		PathListener listener = new PathListener();
    		addMouseListener(listener);
    		addMouseMotionListener(listener);
    		this.setVisible(true);
    	}
    
    
    	public void paintComponent(Graphics gc) {
    		super.paintComponent(gc);
    
    
    		Graphics2D g2 = (Graphics2D) gc;
    
    
    		if (start != null && stop != null) {
    			BasicStroke stroke = new BasicStroke(1);
    			Shape strokedShape = stroke.createStrokedShape(shape);
    			g2.draw(strokedShape);
    			g2.fill(strokedShape);
    		}
    	}
    
    
    	public String getName() {
    		return wb_name;
    	}
    
    
    	public void setName(String name) {
    		wb_name = name;
    	}
    
    
    	private class PathListener extends MouseAdapter {
    
    
    		public void mousePressed(MouseEvent event) {
    			start = event.getPoint();
    			shape = path;
    			
    		}
    
    
    		public void mouseDragged(MouseEvent event) {
    			stop = event.getPoint();
    
    
    			path = (Path2D) shape;
    			path.moveTo(start.x, start.y);
    			path.lineTo(stop.x, stop.y);
    			shape = path;
    			start = stop;
    			
    			repaint();
    		}
    
    
    		public void mouseReleased(MouseEvent event) {
    			path = (Path2D) shape;
    			try {
    				path.closePath();
    			} catch (Exception ingore) {
    			}
    			shape = path;
    			
    
    
    			repaint();
    
    
    		}
    
    
    	}
    
    
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da maxnanus Visualizza il messaggio
    qualcuno riesce a spiegarmi in modo semplice come funziona questa classe?
    L'hai provato realmente? Da quanto posso dedurre dal codice, il pannello permette di disegnare "a mano libera" una linea continua dal momento della pressione al momento del rilascio. E la cosa si può ripetere per avere più spezzoni separati .... tutto poi si "accumula" all'interno di quell'unico oggetto Path2D.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    37
    Quote Originariamente inviata da andbin Visualizza il messaggio
    L'hai provato realmente? Da quanto posso dedurre dal codice, il pannello permette di disegnare "a mano libera" una linea continua dal momento della pressione al momento del rilascio. E la cosa si può ripetere per avere più spezzoni separati .... tutto poi si "accumula" all'interno di quell'unico oggetto Path2D.
    effettivamente funziona cosi..
    ma come viene sfruttato il path2D?
    e lo shape?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da maxnanus Visualizza il messaggio
    ma come viene sfruttato il path2D?
    e lo shape?
    No guarda ... il codice che hai postato non è proprio ben fatto ed è un po' confuso. Lo Shape è il Path2D (Path2D.Double). Infatti se vedi fa ad esempio:

    path = (Path2D) shape;

    e poi

    shape = path;

    In sostanza l'oggetto figura è sempre solo uno e quello.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.