Riguardo alla proprietà .Cached dell'oggetto DrawingArea, v'è da precisare che, come ha specificato il membro, jguardon, del forum spagnolo: "Si dibujas fuera del evento _Draw() del drawing area, tienes que poner cached en True."; ossia quella proprietà va usata, come posta a True, se si deve disegnare qualcosa nella DrawingArea senza usare l'evento _Draw( ) .
Facciamo due esempi semplici:
Public Sub Form_Open()
DrawingArea1.Cached = True
With Paint
.Begin(DrawingArea1)
.LineWidth = 2.0 ' <---- In caso di ".Cached = True" questa proprietà va sempre impostata per far mostrare i contorni di una figura geometrica non riempita con colore! '
.Brush = Paint.Color(Color.Red)
.Ellipse(100, 10, 100, 100)
.Stroke
.End
End With
End
Public Sub Button1_Click()
With Paint
.Begin(DrawingArea1)
.LineWidth = 2.0 ' <---- In caso di ".Cached = True" questa proprietà va sempre impostata per far mostrare i contorni di una figura geometrica non riempita con colore! '
.Brush = Paint.Color(Color.Yellow)
.Ellipse(200, 10, 100, 100)
.Stroke
.End
End With
End
e quest'altro:
Public Sub Form_Open()
DrawingArea1.Cached = True
End
Public Sub DrawingArea1_MouseDown()
Paint.Begin(DrawingArea1)
Paint.Ellipse(Mouse.X - 25, Mouse.Y - 25, 50, 50)
Paint.Brush = Paint.Color(Color.RGB(Rnd * 255, Rnd * 255, Rnd * 255))
Paint.Fill(True)
Paint.End
End
Come è possibile notare, sia nell'uno che nell'altro non viene utilizzata una sub-routine dell'evento _Draw( ) della DrawingArea.
Riporto anche - per maggiore completezza - quanto ha affermato Leo72 in un suo intervento di oltre 6 anni fa: " la proprietà Cached rallenta di molto la gestione della drawing area per cui viene messa su false per motivi di velocità. Se poi qualcuno necessita che l'immagine sia "persistente", allora se la imposta su True. "