Newsgroup: it.comp.lang.delphi
Titolo: eventi Paint

Salve a tutti,
ho un problema con la sequenza degli eventi Paint.
Ho due PaintBox sul form principale, PB1 e PB2.
In ciascuno dei corrispondenti eventi PB1Paint e PB2Paint
sono implementati dei metodi grafici sui rispettivi canvas.
Nonstante io richiami le procedure Repaint in un determinato ordine
PB1.Repaint;
PB2.Repaint;
la PB2 viene disegnata prima della PB1, e a me non va bene
in quanto la scala del diseno nella 2 dipende da come ho disegnato la 1.
Qualche suggerimento?
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/m2/

Qualche suggerimento?
purtroppo non ho tempo fare delle prove per darti una
soluzione sicura se non quella di chiamare Paint al
posto di Repaint ma posso dirti, secondo me, perchè si
ottiene questo tipo di comportamento con il Repaint.
Il metodo Repaint dei TControl, se il ControlStyle non
è csOpaque, non fa altro che Invalidare l'Area del
controllo il che provocherà al successivo ridisegno
della form un ridisegno dell'intera area del controllo.
Quindi, il controllo, non esegue, nel momento della
chiamata del metodo Repaint il Paint del controllo,
delegandolo al cliclo di disegno dell'intero form in
base al suo criterio di ordinamento di ridisegno dei
controlli.
Spero di essermi spiegato ... ora devo lasciare il pc
... se per domani non hai risolto tu, vedo di fare
qualche prova ...
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/

 controlli.
penso proprio che sia come tu dici, ma anche chiamando Paint si ottengono  
risultati strani,
quindi o si impone csOpaque (ma come?) oppure bisogna conoscere l'ordine  
interno in cui esegue i repaint (ma e' possibile?)

 [...]
In genere, quando sviluppo controlli grafici, io non tendo ad avere una 
priorità nell'ordine in cui vengono effettuati i "refresh" del contenuto 
stesso dei controlli.
Quando si richiama un metodo oppure si altera una proprietà che deve 
comportare, come "effetto collaterale", un aggiornamento del controllo 
poichè graficamente cambiato, chiamo il metodo /Invalidate/ che di fatto 
segnala a Windows la "non validità" del contenuto del controllo stesso, 
il quale verrà disegnato non appena possibile.
Se il tracciamento del tuo controllo, o della *TPaintBox*, è così 
"pesante" da introdurre degli artifizi come quello che hai denunciato, 
valuta l'idea di disporre di un *TBitmap* di appoggio che rispecchia 
esattamente l'aspetto del controllo; quando giunge il momento di 
visualizzare il controllo, disegna sulla *TPaintBox* o sul tuo controllo 
visuale il bitmap di appoggio, eventualmente già elaborato a seguito 
delle modifiche apportate.
Forse, oltre a comuni problemi di "flickering", riesci ad ottenere anche 
una soluzione al tuo problema.
In alternativa, puoi cercare qualche package di terze parti in grado di 
velocizzare questo tipo di processo fornendo algoritmi più performanti 
di quelli "standard" resi disponibili attraverso l'oggetto /Canvas/ di 
Delphi (che poi incapsula le funzioni API di Windows).
Io ho usato "Graphics32" con molta soddisfazione; si tratta di software 
libero che puoi scaricare dal sito ufficiale:
http://graphics32.org/wiki/
Ciao! :-)
-- 
Marco «Alka» Breveglieri
  (marco [@] abls [.] it)
  ABLS Team S.n.c. - Software & Web
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it

 ha scritto nel messaggio
news:opsm2nrscgnu6ra7@casarep...



No, anzi per sucurezza li ho distanziati

 ha scritto nel messaggio
news:opsm4ecynanu6ra7@casarep...


mi sembra che l'ordine sia dall'alto verso il basso


-- 
