Problemi con l'oggetto Graphics

lunedì 25 ottobre 2004 - 21.11

zhart Profilo | Newbie

Sono alle prime armi.
cerco di fare un programma di disegno semplice semplice.
allora creo la windows application, ci metto dentro un panel e ottengo da questo il Graphics.
Allora tramite il mouse l'utente potrà disegnare sul panel.
Il problema è che quando si riduce a icona il programma e lo si riapre il pannello ridiventa bianco.
Come devo fare affichè ciò non accada?
aspetto vostri gentili consigli, Francesco

Andy Profilo | Senior Member

Ciao..succede perchè ogni volta che riduci a icona, e poi ripristini una finestra, essa viene ridisegnata dal sistema, e al refresh della finestra lui ricrea tutta la form, senza tener conto del tuo disegno..per evitare ciò ti devi salvare in tempo reale i punti dove il tuo Mouse ha tracciato il disegno, (oppure ti salvi tutto il desegno stesso alla fine del tracciato mouse), e lo devi rinfrescare ogni volta che la form si ricrea.
Esiste il metodo OnPaint, è li che va inserito il refresh del tuo disegno personale..vedrai che te lo rittrovi anche se la form viene ricreata.

zhart Profilo | Newbie

grazie 1000 Andy.
rimane solo un piccolo altro intoppo e il gioco è fatto.
Ho pensato di salvare il contenuto dell'oggetto Graphics in un oggetto GraphicsState.
Sotto tuo consiglio nel metodo OnPaint poi richiamo myGraphics.Restore (myGraphicsState).
Ho deciso di creare il GraphicsStore al momento in cui l'applicazione viene ridotta a icona, ma non trovo il metodo giusto da ridefinire a tale scopo.
Faccio tutto questo perchè mi sembra uno spreco salvare ad ogni nuova operazione di disegno.
Francesco

Andy Profilo | Senior Member

Per risolvere il tuo ultimo problemino ti riporto ciò che dice MSDN a riguardo:


Proprietà Form.MinimizeBox

...con la riduzione a icona di un form in fase di esecuzione viene generato un evento Resize. La proprietà WindowState riflette lo stato corrente della finestra...

Quindi un metodo potrebbe essere (avendo una form con FormBorderStyle =FixedSingle) quando ricevi l'evento Resize, infatti tu non puoi cambiare manualmente le sue dimensioni, l'unitco momento in cui cambiano è quando viene trasformata a icona..

Ciao.

zhart Profilo | Newbie

ok adesso è tutto a posto, a rivederci!!!

Andy Profilo | Senior Member

Perfetto..ciao.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5