Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - classe graphics
Forum - C# / VB.NET - classe graphics

Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 16:48
Sabato, 28/03/2009
ciao, ho un problema con la classe graphics; come scrive anche Totem nella sua guida, la classe graphics non ha costruttori e ci si può accedere solo tramite l'evento paint.

io ho bisogno di scatenare questo evento ogni volta che devo disegnare qualcosa nel form, come possa fare?

grazie!!!

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2007
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:13
Sabato, 28/03/2009
Dipende che tipo di evento ti serve

C'è esempio

Handles PictureBox1.Paint
che scatena l'evento appene viene disegnata la picturebox

Oppure il classico Click
per sapere se la picturebox e stata cliccata


PM Quote
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 18:26
Sabato, 28/03/2009
devo scatenare l'evento paint della classe form

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:39
Domenica, 29/03/2009
Basta richiamare il gestore d'evento:
Codice sorgente - presumibilmente Plain Text

  1. Form1_Paint(Me, EventArgs.Empty)


I gestori d'evento sono pur sempre normali procedure richiamali con la sintassi canonica.

Devo far notare che è vero quello che ho scritto, ma, dato che l'ho scritto un po' di tempo fa, devo aggiungere che è possibile disegnare sui controlli anche senza usare l'evento paint e, anzi, ottenendo risultati molto migliori in termini di performance. Questo secondo metodo consiste nel disegnare con graphics su una bitmap vuota e poi impostare questa bitmap come immagine (o immagine di sfondo) del controllo.

PM Quote
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 17:18
Domenica, 29/03/2009
Avevo già letto la possibilità di mandare un EventArg (anche painteventarg) vuoto ma non funziona, inoltre visto che è proprio da painteventarg che si ricava l'oggetto graphics non posso mandargli un oggetto vuoto

comunque ho risolto così:

("qualsiasi cosa", new PaintEventArgs(Graphics.FromHwnd(oggettoformcorrente.handle), new rectangle(...));

la classe graphics è vero che non ha costruttori ma un suo oggetto lo si può recuperare in qualsiasi momendo dall'handle della form.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:44
Lunedì, 30/03/2009
Sì, beh, non ho scritto tutto il codice perchè mi ero scordato che si stava parlando di Paint e non di un evento comune come Click. Il principio comunque era quello.

L'oggetto graphics che ottieni è quello che rappresenta il form, ma io parlavo di qualcosa di più simile ad un rendering real-time, ad esempio per visualizzare un grafico animato (tipo quello del consumo di memoria del task manager).

PM Quote