Domanda

Sto cercando di scrivere un custom TGraphicControl discendente, che consente a un utente di incorporare un SDL rendering di superficie su un VCL forma.Ciò fornirà un modo semplice per visualizzare SDL animazioni in un modulo.

A quanto pare un TGraphicControl viene ridisegnato con il metodo Paint.Quanto spesso questo chiamato?E ' solo quando succede qualcosa di invalidare il controllo, o ci sono altre cose che lo chiami?Come può interagire con qualcosa che fa proprio il disegno?

È stato utile?

Soluzione

Domanda 1: Quanto spesso questo chiamato?

Vedi risposta Mghie:ogni volta che la finestra padre processi di controllo il messaggio WM_PAINT

Domanda 2: È solo quando succede qualcosa di invalidare il controllo, o ci sono le altre cose che la chiamate?

Vedi risposta Mghie:solo quando è invalidata

Domanda 3: Come si fa che interagiscono con qualcosa che non il suo proprio disegno?

Si deve mettere il proprio drawning di routine nel metodo Paint di TGraphicControl discendente - utilizzando la direttiva override.Disegno in Paint metodo non permette di inviare un altro WM-messaggio di disegno.Mentre nel metodo Paint è possibile disegnare sulla tela senza entrare in un WM-VERNICE ciclo di messaggi.Rendere il vostro codice di disegno il più velocemente possibile, perché non ci può essere un bel po ' di WM-VERNICE messaggi di volare.Se la vostra routine di disegno prende un sacco di tempo, la vostra applicazione apparirà lento/non risponde.

Altri suggerimenti

Il metodo Paint di un controllo non-finestra (che è TGraphicControl) viene chiamata quando il controllo con la finestra si ridisegna sotto. Ciò accade quando un messaggio WM_PAINT per il controllo con la finestra viene elaborato.

Un controllo con la finestra viene aggiornata sia quando la sua intera area o parti di esso sono state invalidate, o quando un'altra finestra che era più alta nel ordine Z viene chiusa o trasferita, in modo che la finestra è esposto e deve essere ridisegnata.

invalidazione un TGraphicControl calcolerà la parte corrispondente del controllo padre finestra e invalidare questa parte.

Se avete bisogno di un TGraphicControl di ridisegnare se stessa, allora è necessario chiamare Invalidate su di esso o il suo controllo padre. Non c'è altro modo per provocare un ridisegno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top