Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    ciao andbin.

    allora, per il primo problema ho risolto banalmente così:
    codice:
    g.drawOval(xx, yy, w, w);
    in effetti non ci avevo pensato.

    per il secondo problema.
    currentRect è un oggetto Rectangle.
    ho modificato il metodo così:
    codice:
            @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawImage(buff, 0, 0, this);
                g.setColor(Color.RED);
                switch (forma) {
                    case "rectangle":
                        if (done) {
                            g.drawRect(xx, yy, currentRect.width, currentRect.height);
                        }
                        break;
                    case "circle":
                        if (done) {
                            g.drawOval(xx, yy, currentRect.width, currentRect.width);
                        }
                        break;
                    default:
                        break;
                }
            }
    non ottengo errori in quanto ci pensa la variabile done.
    solo che con la forma rettangolo nessun problema, mentra con il cerchio si, in quanto ottengo cmq un rettangolo.
    penso che dipenda dal fatto che currentRect è un oggetto Rectangle.
    c'è un qualche oggetto che rappresenti un ovale??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    allora, per il primo problema ho risolto banalmente così:
    codice:
    g.drawOval(xx, yy, w, w);
    Infatti. Avresti potuto mettere h, h oppure per entrambi i valori "il minore tra w e h". In tutti questi casi faresti sempre un cerchio. Cambia solo dal punto di vista di come/quanto l'utente deve spostarsi in base a cosa si aspetta di ottenere.

    Quote Originariamente inviata da fermat Visualizza il messaggio
    penso che dipenda dal fatto che currentRect è un oggetto Rectangle.
    c'è un qualche oggetto che rappresenti un ovale??
    Non è un problema di Rectangle, non lo stai usando come "shape" da disegnare direttamente ma solo come "contenitore" di locazione+dimensione. Materialmente usi drawOval e questo fa quello che dice il nome: disegna un "ovale".
    Se dici che disegna un rettangolo, probabilmente non sta passando da lì e la radice del problema è altrove.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    scusa, mi sono espresso male.
    il programma in sostanza salva la porzione disegnata in una immagine.
    sul jpanel compare un ovale, ma l'immagine salvata è rettangolare.
    sul jpanel c'è di default una immagine dell'intero schermo.
    ho usato un BufferedImage.
    quando clicco sul bottone:
    codice:
            public void capture(ActionEvent e) {
                try {
                    BufferedImage subBuff = buff.getSubimage(xx, yy, w, h);
                    jfc.salva(subBuff);
                    DeleteTemp.delete(fileDelete);
                } catch (AWTException | IOException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
    probabilmente è qua l'errore.
    le coordinate le imposto qua:
    codice:
            @Override
            public void mouseReleased(MouseEvent e) {
                w = e.getX() - currentRect.x;
                h = e.getY() - currentRect.y;
                currentRect.setSize(w, h);
                done = true;
                repaint();
            }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ma l'immagine salvata è rettangolare.
    Ovvio .... qualunque formato "raster" (bitmap), insomma non "vettoriale" ... è rettangolare!!

    Se vuoi che nel file salvato ci sia l'immagine solo nell'ovale e nel resto ci sia o un colore fisso (es. nero) oppure completa "trasparenza" ..... beh, si può fare ma è un altro paio di maniche ...
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.