Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

disegnare su picturebox

65 views
Skip to first unread message

VBMizio

unread,
Jan 22, 2010, 10:00:26 AM1/22/10
to
Ciao,
ho finalmente trovato un caso in cui il vecchio VB6 mi avrebbe dato mooolto
meno filo da torcere rispetto a VB.Net 2008.
E' noto che, mancando la proprieta' AutoRedraw, il disegno su una picture
box dovrebbe essere fatto nell'evento Paint, per evitare che il passaggio di
un'altra finesrta "sopra" la picture, abbia l'effetto di cancellare la
superficie gia' disegnata.
Il mio problema e' che ho una classe qualunque, che accetta tramite
l'esposizione di una proprieta', un controllo di tipo picturebox come
preview.
Naturalmente e' la classe (o meglio, ogni istanza di... ma ci capiamo
ugualmente :-) che sa come deve rappresentarsi nella picturebox.
E' quindi l'oggetto di questa classe che si autodisegna, e lo fa quando gli
serve.
Ho quindi pensato, intuitivamente, di seguire una strada, ma non sono
riuscito... vediamo se qualcuno mi aiuta.
Il mio oggettino si disegna sul controllo di preview, appena ha terminato,
la mia picturebox *ha* il disegno.
Se passo davanti alla picturebox, oppure (cosa che mi succede spesso) nel
momento in cui ho disegnato l'oggetto, in realta' la form attiva era
un'altra, visivamente la mia picturebox e' "sporca", ma il disegno sulla sua
superficie c'e' ed e' buono, giusto?
La strada che ho pensato e' che, nell'evento Paint, "catturo" il disegno che
ho sulla superficie della picture, e semplicemente lo ridisegno, utilizzando
l'oggetto graphic che viene passato dall'argomento di tipo PaintEventArgs.
Il problema e' che se adotto questo metodo, riesco a disegnare solo dei
quadrettoni grigi, che non so da dove provengano.
Qualcuno ha qualche idea di come posso fare?
Sto sbagliando completamente strada?
Grazie e buon WE... Maurizio

Marco Trapanese

unread,
Feb 3, 2010, 3:54:29 AM2/3/10
to
Il 22/01/2010 16.00, VBMizio ha scritto:

> Naturalmente e' la classe (o meglio, ogni istanza di... ma ci capiamo
> ugualmente :-) che sa come deve rappresentarsi nella picturebox.
> E' quindi l'oggetto di questa classe che si autodisegna, e lo fa quando gli
> serve.
> Ho quindi pensato, intuitivamente, di seguire una strada, ma non sono
> riuscito... vediamo se qualcuno mi aiuta.
> Il mio oggettino si disegna sul controllo di preview, appena ha terminato,
> la mia picturebox *ha* il disegno.
> Se passo davanti alla picturebox, oppure (cosa che mi succede spesso) nel
> momento in cui ho disegnato l'oggetto, in realta' la form attiva era
> un'altra, visivamente la mia picturebox e' "sporca", ma il disegno sulla sua
> superficie c'e' ed e' buono, giusto?


Non sono sicuro di avere capito, quindi perdona se scrivo un'inesattezza.
Ma io in situazioni simili prevedo nella classe un metodo Redraw che
viene invocato direttamente dall'evento paint della picturebox di preview.

Per cui, la tua classe disegna quello che vuole quando vuole.
Se perᅵ ᅵ necessario rinfrescare l'output viene forzato il ridisegno.

Marco

VBMizio

unread,
Feb 3, 2010, 4:16:14 AM2/3/10
to
Ciao Marco, grazie per la risposta,
...

> Non sono sicuro di avere capito, quindi perdona se scrivo un'inesattezza.
> Ma io in situazioni simili prevedo nella classe un metodo Redraw che viene
> invocato direttamente dall'evento paint della picturebox di preview.
...
Mi sa che hai centrato perfettamente il problema :-)
In effetti e' una soluzione semplice ed immediata, a volte ci si perde
davvero in un bicchiere d'acqua!
Grazie ancora, 73 (tu mi capisci!!) ... Maurizio


Marco Trapanese

unread,
Feb 3, 2010, 4:21:20 AM2/3/10
to
Il 03/02/2010 10.16, VBMizio ha scritto:

> Mi sa che hai centrato perfettamente il problema :-)
> In effetti e' una soluzione semplice ed immediata, a volte ci si perde
> davvero in un bicchiere d'acqua!


Lieto di esserti stato utile!


> Grazie ancora, 73 (tu mi capisci!!) ... Maurizio


Sono commosso, non pensavo fossi (ancora) conosciuto come OM :)

73 anche a te!
Marco / iw2nzm

0 new messages