+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28

[Applet] Attivare solo una parte di applet

  1. #1
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    Salve ragazzi
    ecco un nuovo post, spero di essere il più chiaro possibile :

    Ho un'applet, su cui, tramite mouse, si disegna a mano libera.
    Fin qua tutto ok.
    Qualcuno mi sa dire come posso fare in modo che il disegno funzioni solo su una parte di applet ?
    La mia applet è 600*500 ma voglio che disegni solo nella parte centrale, tipo in un rettangolo di 500*400.
    E' fattibile con qualche metodo secondo voi ?
    Ho provato a mettere una condizione nel momento in cui mi ricavo le x e y, ma se trascino il mouse troppo veloce si perde in qualche calcolo e mi tira la riga oltre le coordinate desiderata.
    Grazie !
    ℹ️ Leggi di più su acer1629 ...

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    E'parecchio tempo che non giocherello con le Applet, ad ogni modo prova ad applicare il clipping all'oggetto Graphics. Un rettangolo di clipping serve proprio ad ignorare ogni operazione di disegno che avviene fuori da una determinata area. Il metodo dovrebbe essere il setClip().

    In alternativa, visto che comunque arriverai ad usare un back buffer prima o poi per evitare sfarfallii, mi pare che la drawImage per disegnare il backbuffer abbia una riscrittura per disegnare una porzione di immagine specifica invece che tutta. In quel caso lavori su backbuffer comodamente e poi ne trasferisci solo la porzione che ti interessa a schermo.

    Ciaociao
    ℹ️ Leggi di più su bottomap ...

  3. #3
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    Grazie mille !!
    purtroppo anche io di applet sono poco pratico ... comincio a smanettare partendo dai tuoi consigli e .... incrocio le dita ^^
    Se non riesco, mi ritroverete qua
    ℹ️ Leggi di più su acer1629 ...

  4. #4
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    setClip funziona da Dio !
    Grazie mille ^^

    Ora mi rimane il problema che già mi avevi anticipato, sul buffer ... vediamo cosa riesco a concludere
    ℹ️ Leggi di più su acer1629 ...

  5. #5
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Se con la setClip non hai problemi, il back buffer può essere una cosa del tutto separata... anche la drawImage, come tutte le operazioni di disegno che vanno a scrivere sul buffer primario (implicito) del Graphics della Applet, risentiranno del rettangolo di clipping.

    Ciaociao
    ℹ️ Leggi di più su bottomap ...

  6. #6
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    L'unico problema che ho è quando muovo il mouse velocemente ... mi perde i pezzi
    Se vado ad una velocità " normale " va benissimo ... quindi mi sa che qualcosa, devo fare !!
    Corretto ?
    ℹ️ Leggi di più su acer1629 ...

  7. #7
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    Niente da fare, non capisco cosa posso inventarmi per rendere il tratto uniforme e non spezzettato ...

    Il metodo che disegna quando trascino il mouse è il seguente :

    public void mouseDragged(MouseEvent event) {
    int x = event.getX(); // recupera la posizione x
    int y = event.getY(); // recupera la posizione y
    Graphics g = getGraphics();
    g.setClip(90, 50, 460, 380);
    g.fillOval(x-5,y-5,10,10);
    }
    ℹ️ Leggi di più su acer1629 ...

  8. #8
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    Nessuno suggerimento ragazzi ?
    Le sto provando tutte, ho anche provato a memorizzare le coordinate prese in un vettore, ridisegnando successivamente ... ma tempo che il problema sia nell'intervallo in cui il mouse preleva i dati. Salta proprio dei pixel
    ℹ️ Leggi di più su acer1629 ...

  9. #9
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Come detto è tanto che non lavoro con le Applet, comunque qualche hint generico:
    - La setClip su Graphics la dovresti poter richiamare una sola volta. L'operazione non è troppo pesante, ma qualcosa sicuramente perdi se la chiami ad ogni giro.
    - Introduci un back buffer. Le operazioni in memoria invece che direttamente a video sono decisamente più veloci e la cosa si dovrebbe verificare in misura minore

    - Se proprio non riesci a rendere continuo il movimento dovrai interpolare tra la posizione attuale e la vecchia. Se disegnassi punti basterebbe forse una drawLine, ma visto che mi pare si tratti di un brush (un ovale riempito appunto) dovrai immaginare una funzione che calcoli e disegni i punti intermedi tra x1,y1 e x2,y2, ovviamente quando la distanza è maggiore di un pixel. Algoritmi per il calcolo di uno slope 2D dovresti poterne trovare a bizzeffe in rete. Chiaramente l'interpolazione è una strada relativamente onerosa e dovrebbe essere l'ultima soluzione.

    Ciaociao
    ℹ️ Leggi di più su bottomap ...

  10. #10
    L'avatar di acer1629
    acer1629 non è in linea Scolaretto
    ciao, grazie mille per la risposta prima di tutto.
    Proverò a mettere un back buffer, spero si trovi qualcosa in internet
    Se non ricordo male, ho provato a settare il setClip in modo che venisse eseguito una sola volta, ma ... peggiorava il disegno, non chiedermi perchè !!
    Ti farò sapere !!
    ℹ️ Leggi di più su acer1629 ...

+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Applet java
    Da Jozzato nel forum Microsoft Windows
    Risposte: 0
    Ultimo Post: 19-09-2015, 18:18
  2. Blocco per applet
    Da gippe69 nel forum Java
    Risposte: 1
    Ultimo Post: 20-10-2014, 17:16
  3. problemi con le applet
    Da concetta nel forum Java
    Risposte: 1
    Ultimo Post: 29-12-2008, 19:55
  4. Applet java
    Da nikasp nel forum Java
    Risposte: 2
    Ultimo Post: 07-06-2007, 22:45
  5. [Applet]WebCam
    Da silversoftware nel forum HTML, CSS e JavaScript
    Risposte: 3
    Ultimo Post: 29-04-2006, 17:09