Quindi in sostanza dovrei creare un UserControl di nome "PALLA"
inserirgli un timer interno del controllo, fare l'ovverride del metodo OnPaint così ad ogni richiamo di ridisegno (ad esempio il resize della Form) la palla verrà ridisegnata
Allora ho provato a creare un UserControl con un Timer "Tmr_Palla:
codice:
Private punto As Point
Private grandezza As Size
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
disegnaPalla(grandezza, Color.Red)
End Sub
Private Function disegnaPalla(ByVal dimensione As Size, ByVal colore As Color)
Dim posizione As Point
posizione.X = 0
posizione.Y = 0
Dim rett As New RectangleF(posizione.X, posizione.Y, dimensione.Width, dimensione.Height)
MyBase.CreateGraphics.Clear(Palla.DefaultBackColor)
MyBase.CreateGraphics.DrawEllipse(New Pen(New SolidBrush(Color.Red)), rett)
MyBase.CreateGraphics.FillEllipse(New SolidBrush(colore), rett)
End Function
Private Sub Palla_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
punto.X = 0
punto.Y = 0
grandezza.Width = 20
grandezza.Height = 20
End Sub
Private Sub tmr_Palla_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_Palla.Tick
punto.X += 1
punto.Y += 1
MyBase.Location = punto
End Sub
Succede pero' che la palla compare un alto a sinistra della form e cominica a muoversi quando sono ancora in fase di Design-Time....Allora vorrei impostare una proprieta' di Design (quelle nel riquadro delle Proprietà di Visual Studio e settare una varibile start di tipo boolean....Ho provato con
codice:
Public Property Start()
Get
Return tmr_Palla.Enabled
End Get
Set(ByVal Value As Boolean)
tmr_Palla.Enabled = Value
End Set
End Property
ma non funge
Inoltre nella msdn cè scritto di mettere nella funzione overridata
MyBase.OnPaint(pe)