2009-08-09 16 views
40

Non so quale di questi tre metodi mi si addica di più. Funzionano tutti per me. Qualcuno sa la differenza tra Refresh, Update e Repaint?Qual è la differenza tra Refresh, Update e Repaint?

+12

A voi e le due persone che up-votato questo finora:. So che l'apertura l'aiuto di Delphi da IDE è un po 'lento, ma dovrebbe essere ancora più veloce di chiedere su SO e in attesa di risposte.Risposte che difficilmente possono fare altro che quotare dall'aiuto. – mghie

+6

La ricerca nella documentazione online, con Google è anche un'altra opzione. //docs.codegear.com/ – stukelly

+4

L'aiuto Embarcadero è noto per la sua "alta qualità piena di informazioni". Capisco che è meglio che ci chieda qui su SO – truthseeker

risposta

38

Secondo la documentazione in linea.

Refresh - Riporta il controllo sullo schermo.

Chiama metodo di aggiornamento per ridipingere immediatamente il controllo . Refresh chiama il metodo Repaint. Utilizzare i metodi Aggiorna e Repaint in modo intercambiabile.

Repaint - Forza il controllo a ridisegnare la sua immagine sullo schermo.

Chiama ridipingere per forzare il controllo su ridipingere immediatamente l'immagine. Se la proprietà ControlStyle include csOpaque, il controllo si applica direttamente a . In caso contrario, il metodo Repaint chiama il metodo Invalidate e quindi il metodo di aggiornamento in modo che qualsiasi porzione visibile di controlli sotto il controllo venga ridipinta.

Update - Elabora immediatamente qualsiasi messaggio di vernice in sospeso.

chiamata Update per forzare il controllo da ridipinto prima di ogni altro, forse in termini di tempo, l'elaborazione richiede posto. Utilizzare Aggiornamento per fornire un feedback immediato a all'utente che non può attendere per il messaggio di vernice di Windows a arrivato.

aggiornamento non invalida il controllo , ma semplicemente forza un ridisegno di eventuali regioni che sono già stati invalidata. Call Repaint invece a invalida anche il controllo.

31

La tua domanda ha già una risposta, ma se hai bisogno di buone prestazioni e meno sfarfallio devi chiamare Invalidare. Permette a Windows di ottimizzare il processo di verniciatura.

Invalidate - Controllo completamente riverniciatura.

Utilizzare Invalidate quando è necessario ridipingere l'intero controllo . Quando più di di una regione all'interno del controllo necessita di ridisegno, Invalidate farà sì che l'intera finestra venga ridipinta, evitando lo sfarfallio causato da ridondanti ridondanti. Nessuna penalità per le prestazioni per chiamare Invalidare più volte prima che il controllo sia effettivamente ridipinto.

3

Per un vecchio (CBuilder 6) riferimento VCL:

Invalidate "Invalidate informa un controllo che tutta la superficie deve essere riverniciato chiamata a invalidate può prevenire lo sfarfallio causato da una serie di modifiche grafiche parziali.. Non è prevista alcuna penalizzazione delle prestazioni per chiamare Invalidate più volte prima che il controllo venga effettivamente ridipinto ".

Il repaint effettivo non si verifica fino a quando il controllo non viene aggiornato. Per forzare un repaint immediato, chiama invece Repaint.

Repaint "TWinControl :: Repaint chiama il metodo Invalidate e quindi il metodo Update per ridisegnare il controllo" (parafrasi leggera).

(Purtroppo, il riferimento più vecchio è migliore e più completo rispetto a quello di riferimento più recente che ho (CBuilder 2007)

Problemi correlati