Logo UGIdotNET

Discussione 'PictureBox'

# Pubblicato il 13 lug 2004 10.45 - Rispondi
Manuel Bosio
PictureBox
Ho un problema:
Devo trasportare un'applicazione che ho scritto per i Pocket su Pc.
L'interfaccia grafica sarà diversa, ma il cuore del Prg sarà quasi lo stesso.
Il mio problema è che devo disegnare a video (come nell'esempio) ma se sposto la PictureBox..o ridimensiono o porto in secondo piano...perdo tutto quello che ho disegnato...
Qualcuno ha qualche idea?
L'utente colora i quadratini e può anche scrivere... (è un cad tessile)

Grazie a tutti

Bosio
# Pubblicato il 13 lug 2004 10.58 - Rispondi
Corrado Cavalli
Re: PictureBox
Prova a spostare la parte di ridisegno nell'evento Paint del form.

HTH
Corrado
# Pubblicato il 13 lug 2004 13.43 - Rispondi
Manuel Bosio
Re: PictureBox
Già fatto...ma è un pochino troppo lento...
Devo farlo girare anche su Pentium 100 con win 98 e 32/64 di ram...
Salvare l'immagine in un file Tmp e ricaricarlo all'occorrenza? (sempre tramite PAINT) che ne dici?
# Pubblicato il 18 lug 2004 13.29 - Rispondi
Raffaele Rialdi
Re: PictureBox
on 13. Jul 2004 13:43 Manuel Bosio wrote:
> Già fatto...ma è un pochino troppo lento...
> Devo farlo girare anche su Pentium 100 con win 98 e 32/64 di ram...
> Salvare l'immagine in un file Tmp e ricaricarlo all'occorrenza? (sempre tramite PAINT)
> che ne dici?

La picturebox in alcune operazioni può essere molto lenta. Forse ti conviene usare direttamente la DrawImage.

Raffaele
# Pubblicato il 21 lug 2004 9.31 - Rispondi
Manuel Bosio
Re: PictureBox
Problema risolto:

Public Function Inizializza(ByVal Left As Integer)
Ptb.Visible = False
'Inizializza
Pnl_Box.Controls.Add(Ptb)
Ptb.BorderStyle = BorderStyle.FixedSingle
Ptb.Size = New System.Drawing.Size(Larg_Col * N_Colonne + 2, Altezza_Riga * N_Righe + 2)
Ptb.Location = New System.Drawing.Point(Left, 0)

Ptb.Image = New Bitmap(Ptb.Width, Ptb.Height)
G = Graphics.FromImage(Ptb.Image)
G.Clear(Back_Color)

'Disegna Griglie
Dim XX, YY As Integer
For YY = 0 To Ptb.Height Step Altezza_Riga
G.DrawLine(Penna, 0, YY, Ptb.Width, YY)
Next

For XX = 0 To Ptb.Width Step Larg_Col
G.DrawLine(Penna, XX, 0, XX, Ptb.Height)
Next
Ptb.Visible = True

' Ptb.Refresh()
Return (Ptb.Width + Ptb.Left - 1)
End Function

Disegno su una IMAGE creata in una PITURE_BOX, anche riducendo ad icona tutto ok

Grazie a TUTTI

:-)
# Pubblicato il 21 lug 2004 11.39 - Rispondi
Raffaele Rialdi
Re: PictureBox
on 21. Jul 2004 09:31 Manuel Bosio wrote:
> Problema risolto:
[...]

visto che ti cancelli da solo il background, ti consiglio di settare con SetStyle i flag di redraw in modo da migliorare la velocità di ritraccio ed eliminare il flickering:
AllPaintingInWmPaint true
DoubleBuffer true
UserPaint true
Opaque true
SupportsTransparentBackColor false
ResizeRedraw (vedi tu)

I primi tre sono i più importanti.

Raffaele
# Pubblicato il 21 lug 2004 14.32 - Rispondi
Manuel Bosio
Re: PictureBox
Scusa ma SetStyle dove lo trovo? devo creare un ControlStyles e associarlo al form/ Picture / image / oggetto Grafico? scusa la mia ignoranza ma normalmente scrivo per PDA e non è da molto che uso VB .NET

Grazie
Manuel
# Pubblicato il 22 lug 2004 0.11 - Rispondi
Raffaele Rialdi
Re: PictureBox
on 21. Jul 2004 14:32 Manuel Bosio wrote:
> Scusa ma SetStyle dove lo trovo? devo creare un ControlStyles e associarlo al form/ Picture / image / oggetto
> Grafico? scusa la mia ignoranza ma normalmente scrivo per PDA e non è da molto che uso VB .NET

Tutti i controlli derivati da Control lo hanno:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassSetStyleTopic.asp

Raffaele
# Pubblicato il 22 lug 2004 15.00 - Rispondi
Manuel Bosio
Re: PictureBox
Grazie 1000 ^ 1000
# Pubblicato il 22 lug 2004 15.30 - Rispondi
Raffaele Rialdi
Re: PictureBox
on 22. Jul 2004 15:00 Manuel Bosio wrote:
> Grazie 1000 ^ 1000

Prego :)

Raffaele

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185