Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    ricavare figura da tracciato

    Allora ragazzi come da titolo vorrei ricavare da un tracciato fatto dal mouse una figura.... ovvero come fa questo video fatto da me:

    http://www.youtube.com/watch?v=B4-PtSjYySc

    il tracciato lo ricavo con questo codice:

    codice:
       public void mouseDragged(MouseEvent e) {
    x1 = (e.getX()-5);
            y1 = (e.getY()-25);
            Graphics g=jPanel1.getGraphics();
            g.setColor(Color.white);
                 g.fillOval(x1, y1, 5, 5);
                 
    }
    anche se non è tanto preciso...
    E' possibile come cosa? mi sapete aiutare? grazie mille!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: ricavare figura da tracciato

    Originariamente inviato da Realscorpion
    Allora ragazzi come da titolo vorrei ricavare da un tracciato fatto dal mouse una figura....
    E' possibile come cosa?
    Potresti mettere tutti i punti forniti con il dragging in un java.awt.Polygon che poi puoi tranquillamente (ri)disegnare con il filling/stroking che ti pare.

    P.S. Vedo che anche qui usi il painting "al volo" sul Graphics. Te lo avevo già fatto notare ma un painting di questo tipo, detto in generale, non è "permamente" a meno che ovviamente nel contesto della "vera" richiesta di disegno tramite paintComponent() ridisegni il tutto allo stesso modo.
    Nel caso specifico del dragging potrebbe anche andare bene. Dopotutto se l'utente è impegnato nel dragging non fa altro .... non sposta finestre di sopra, non ridimensiona la finestra, ecc....
    Quando termina il dragging e avviene una richiesta di repaint, tutti i tuoi bei cerchietti sparirebbero .... anche qui potrebbe andarti bene, se ad esempio nel "vero" painting disegni quel Polygon che ho detto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ok adesso provo a creare il poligono
    un'altra cosa volevo dire che se muovo il mouse velocemente però ottengo tanti pallini distaccati tra di loro come posso evitare questo?

  4. #4
    scusa però non ho capito una cosa come faccio a capire quanti punti ho e le loro coordinate?
    perchè il poligono lo creo così:
    codice:
    Polygon poly = new Polygon();
    
    poly.add(100, 100);
    poly.add(150, 150);
    poly.add(50,  150);
    ....

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Realscorpion
    se muovo il mouse velocemente però ottengo tanti pallini distaccati tra di loro come posso evitare questo?
    Evitarlo non puoi .... qui tra l'altro centra la "risoluzione" e la velocità di notifica dei dati da parte del mouse.
    Nel caso di movimenti veloci otterrai un poligono con evidenti linee spezzate.

    Originariamente inviato da Realscorpion
    scusa però non ho capito una cosa come faccio a capire quanti punti ho e le loro coordinate?
    Nel mousePressed (o al primo mouseDragged) istanzi (o fai reset() se vuoi riutilizzare lo stesso oggetto) il Polygon. Ad ogni mouseDragged aggiungi il punto. Nel mouseReleased richiedi il repaint().

    Chiaramente se vuoi gestire una "lavagna" di disegno che deve gestire più figure, dovrai gestire una struttura dati che contiene più Polygon. Ad ogni paintComponent() li ridisegni tutti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    ho fatto così ma non va

    codice:
       public void mousePressed(MouseEvent evt) {
    
    Polygon poly = new Polygon();
    poly.addPoint(x1, y1);
    Graphics g=jPanel1.getGraphics();
    
    g.fillPolygon(poly);
    
          }
    codice:
         public void mouseDragged(MouseEvent e) {
    x1 = (e.getX()-5);
            y1 = (e.getY()-25);
            Graphics g=jPanel1.getGraphics();
            g.setColor(Color.white);
                 g.fillOval(x1, y1, 5, 5);
                 
    }
    codice:
        public void mouseReleased(MouseEvent e) {
    repaint();
    }

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Realscorpion
    codice:
       public void mousePressed(MouseEvent evt) {
    
    Polygon poly = new Polygon();
    poly.addPoint(x1, y1);
    Graphics g=jPanel1.getGraphics();
    
    g.fillPolygon(poly);
    Ma poly è una variabile locale, terminato il metodo essa sparisce ...... che ti serve??? E che ti serve fillare un poligono con 1 solo punto????

    Originariamente inviato da Realscorpion
    codice:
         public void mouseDragged(MouseEvent e) {
    x1 = (e.getX()-5);
            y1 = (e.getY()-25);
            Graphics g=jPanel1.getGraphics();
            g.setColor(Color.white);
                 g.fillOval(x1, y1, 5, 5);
    }
    Qui non vedo l'addPoint() .... glielo devi aggiungere il punto al poligono .. no???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    perfetto ci sono riuscito ultima cosa.... come nell'altro thread per far cadere gli oggetti io facevo un for cambiando di volta in volta la y... ho provato a fare la stessa cosa con il poligono ma nn va, rimane fermo.. come devo fare?

    codice:
     public void mouseReleased(MouseEvent e) {
         Dimension d = jPanel1.getSize();
           x = (e.getX()-25);
            y = (e.getY()-50);
    
    
    
    
    try {
          draw();
         for (int i = 1; i <= 2000; i++) {
            move();
          Thread.sleep(30);
          if (y + YSIZE >= d.height) break;
            }
          } catch(InterruptedException ex) {}
    }
    codice:
    public void move() {
          x += dx;
        y += dy;
    
    Dimension d = jPanel1.getSize();
    ly = d.height;
    lx = d.width;
            Graphics g=jPanel1.getGraphics();
            g.setColor(Color.BLUE);
                 g.fillRect(0, 0, lx, ly);
            g.setColor(Color.orange);
            g.fillPolygon(poly);
                 
               
                 
      }

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    A ciascuna discussione il suo argomento.
    Qui di parla di ricavare una figura da un tracciato... la caduta degli oggetti ha una sua discussione separata e solo lì se ne deve parlare. Altrimenti il forum diventa un'accozzaglia di post senza nessun filo logico.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2026 vBulletin Solutions, Inc. All rights reserved.