Autore Topic: Appena ho inserito una immagine di sfondo tutto è diventato lento....  (Letto 924 volte)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Ciao a tutti. Sto giocherellando un po'.
Il mio progetto è molto semplice, consiste di una form, una drawing area ed un "button".
con questo codice muovo il mio "button" sull'asse delle x in maniera molto fluida:


 
Codice: [Seleziona]
PUBLIC x AS Float
 PUBLIC y AS Float
 PUBLIC xa AS Float
 PUBLIC ya AS Float


PUBLIC SUB DrawingArea1_DblClick()
 DIM i AS Integer
 DIM ii AS Integer
     IF xa < x THEN
        FOR i = xa TO x STEP +1
            Button1.Move(i, ME.Button1.Y)
            WAIT 0.01
        NEXT
        xa = Button1.X
        ya = Button1.Y
        ValueBox3.Value = ya
        ValueBox4.Value = xa
     ELSE IF xa > x THEN
             FOR ii = xa TO x STEP -1
                 Button1.Move(ii, ME.Button1.Y)
                 WAIT 0.01
             NEXT
             xa = Button1.X
             ya = Button1.Y    
             ValueBox3.Value = ya
             ValueBox4.Value = xa    
     ENDIF
END


ho inserito poi una immagine di sfondo nella drawingarea con questo codice:

Codice: [Seleziona]
PUBLIC SUB DrawingArea1_Draw()
 DIM immagine AS Image
 immagine = Image.Load("indirizzo immagine")
 Draw.Image(immagine, 0, 0)
 immagine.Resize(ME.DrawingArea1.Width, ME.DrawingArea1.Height)
END


è una immagine grande in jpeg, e ora il movimento del mio button è diventato lentissimo.....
Come al solito la classica domanda è:<>
Ciao a tutti!

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Appena ho inserito una immagine di sfondo tutto è diventato lento....
« Risposta #1 il: 28 Ottobre 2009, 16:42:22 »
Hai un computer abbastanza potente? Potrebbe essere un problema di memoria...tieni comunque presente che una drawing area disegna e la procedura non è tra le più leggere. Più volte si è discusso su questo stesso forum di come fare un uso eccessivo della drawing area rallenti non di poco la fluidità di un normale programma.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Appena ho inserito una immagine di sfondo tutto è diventato lento....
« Risposta #2 il: 28 Ottobre 2009, 19:55:40 »
Ti consiglierei, se l'immagine è sempre quella, quindi statica, di scriverla sulla drawingarea solo una volta.
L'evento Draw() viene sempre attivato se qualcosa cambia nelle proprietà dell'oggetto, quindi l'immagine viene sempre ricaricata e ridisegnata ogni volta.
Se all'inizio della tua form (es. Open), ti carichi l'immagine, il metodo Draw non ti serve. Per fare in modo che l'immagine non sparisca dalla drawingarea, devi impostare una paio di proprietà: Cached e Merge, che permettono di attivare una serie di impostazioni interne all'oggetto, per mantenere valido il suo contenuto.

Inoltre, se vuoi che il movimento del mouse sia gestibile a programma, devi attivare la proprietà Tracking=TRUE, altrimenti gli spostamenti del mouse non verranno tracciati, e non sarà possibile determinarne la posizione corrente (sempre se ti server...).

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Appena ho inserito una immagine di sfondo tutto è diventato lento....
« Risposta #3 il: 29 Ottobre 2009, 00:30:47 »
se la drawing area ha solo la funzione di fornire uno sfondo al form puoi semplicemente impostare la proprietà picture del form con il percorso dell' immagine. in caso contrario segui i consigli di md9327

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Appena ho inserito una immagine di sfondo tutto è diventato lento....
« Risposta #4 il: 29 Ottobre 2009, 10:21:59 »
E se si avesse una immagine che deve essere ridisegnata? meglio utilizzare un timer?
Il mio pc non è dei più vecchi...intel core 2 duo 2,4; 4 gb di ram ed una nvidia 8800....

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Appena ho inserito una immagine di sfondo tutto è diventato lento....
« Risposta #5 il: 29 Ottobre 2009, 13:36:09 »
la fai ridisegnare solo quando serve