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

Disegno con VB.NET

114 views
Skip to first unread message

Giampietro Zamparo

unread,
Aug 23, 2004, 8:49:03 AM8/23/04
to
Ciao a tutti!Come immaginerete ho un problema...Devo creare dei disegni su
un Panel di una form... fino a qua nessun problema. Dim eGraph as Graphics =
Panel1.CreateGraphicstt.DrawEllipse(New Pen(Color.IndianRed), 50, 50, 50,
50) Infatti con queste due righe di codice mi fa il cerchietto dove l'ho
indicato ma... Se disattivo la form (la riduco ad icona ad esempio) e la
ripristino, non ho più il mio bel disegnetto. Aiuto, come posso fare per
riaverlo se la form mi passa da stato attivo --> disattivo --> attivo??
Grazie milleCiao a tutti
--


Alex

unread,
Aug 23, 2004, 8:54:41 AM8/23/04
to
Gestisci il disegno nell'evento paint del pannello e dovresti risolvere:

Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

Dim p As New System.Drawing.Pen(System.Drawing.Color.IndianRed)

e.Graphics.DrawEllipse(p, 50, 50, 50, 50)

p.Dispose() : p = Nothing

End Sub


--

HTH


--
Alex
UGIdotNET - http://www.ugidotnet.org
Weblog: http://www.ugidotnet.org/2435.blog


Giampietro Zamparo

unread,
Aug 23, 2004, 9:24:07 AM8/23/04
to
Si in effetti cosě funziona, ma io per semplificare il post del messaggio mi
sono dimenticato di fare una precisazione...

Il disegno lo creo io con il mouse... infatti il cerchietto viene creato con
il mouseclick sul pannello... ( o sul mousemove se voglio tracciare un
disegno con il mouse)

Questo č il problema, se come prima attivo --> disattivo --> attivo, non so
che pesci pigliare...

Gestendo il disegno nell'Paint, vedo quello che ho disegnato solo se
rinfresco la form, ma vedo solo l'ultimo elisse che ho disegnato...

Non capisco come fare a tenere in memoria tutto quello che ho fatto, cavolo,
mica dovrň farmi una tabella dove tengo le informazioni sui disegni che ho
fatto????


"Alex" <blacksiriu...@NOSPAMvirgilio.it> ha scritto nel messaggio
news:e6dvSDRi...@TK2MSFTNGP12.phx.gbl...

Andrea Moro

unread,
Aug 23, 2004, 9:40:08 AM8/23/04
to
Se pensi che ogni azioni che compi, la tua form viene invalidata
quindi rinfrescato tutto quello che c'è a video, la risposta è si.
Nel tuo particolare caso, probabilmente non fai azioni su quel
panel dove disegni con il mouse, così - non chiedermi come perchè
non lo sò - il pannello sà conservare quanto hai già disegnato.

Ma ti sarà inevitabile, prima o poi, se devi gestire molteplici disegni,
tenerti traccia di cosa hai disegnato, e delle coordinate, per poi
nella paint dargli in pasto un ciclo con tutte le operazioni di disegno.

Può darsi che mi sbagli, ma io ho dovuto fare così.

Ciao
Andrea


Claudio Bellucci

unread,
Aug 23, 2004, 9:37:19 AM8/23/04
to
Scusate se mi intrometto ;-P
quando disegni la tua forma con il mouse prima di "tracciarla" devi
memorizzarla e tracciarla successivamente all'interno dell'evento paint del
panel.

piccolo esempio:

<EVENTO MOUSE MOVE>


'dove gPath č un globale della classe GraphicPath
me,gPath.Reset()
me.gPath.AddEllipse(p, 50, 50, 50, 50)

me.panel1.refresh
</EVENTO MOUSE MOVE>

adesso all'interno del gestore OnPaint del pannello disegni quello che si
trova all'interno
del graphicsPath


Claudio


"Giampietro Zamparo"
<z*a*m*p*a*r*o*@m*e*d*a*r*c*h*i*v*e*r*_NOSPAMSenzaAsterischi.com> ha scritto
nel messaggio news:u53NyRRi...@TK2MSFTNGP10.phx.gbl...

Giampietro Zamparo

unread,
Aug 23, 2004, 10:49:05 AM8/23/04
to
Ho risolto, non chiedermi perché ho fatto così o chiedermi se è giusto o
sbagliato... lo ignoro...

Comunque
siccome mi tengo traccia di quello che disegno... nell'onpaint ridisegno
tutto...


"Andrea Moro" <moroan...@tiscali.it> ha scritto nel messaggio
news:Ov%23M6aRi...@tk2msftngp13.phx.gbl...

Alex

unread,
Aug 23, 2004, 12:32:26 PM8/23/04
to
> siccome mi tengo traccia di quello che disegno... nell'onpaint ridisegno
> tutto...

Mi sembra la soluzione più ovvia

Raffaele Rialdi [MVP]

unread,
Aug 23, 2004, 1:38:31 PM8/23/04
to
> Comunque
> siccome mi tengo traccia di quello che disegno... nell'onpaint
> ridisegno tutto...
Nei PaintEventArgs ricevi delle informazioni (ClipRectangle) che ti dice
quale parte del disegno deve essere ridisegnata.
Se riesci a minimizzare la porzione da ridisegnare in questo modo, sarai
molto più performante.

--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://www.ugidotnet.org/2082.blog

0 new messages