Procediamo ora con l'analisi di alcuni elementi grafici di Visual Basic, osservando come sia possibile creare delle funzioni che costruiscano degli oggetti grafici.
A tal fine creiamo una funzione, che chiameremo PALLINA, tramite la quale, appunto, sarà possibile disegnare delle palline che si muoveranno sullo schermo, associando a ciascuna di essa, rispettivamente:
- il passo con cui si muoverà;
- il diametro;
- le coordinate da cui partirà;
- il verso, su ciascuno dei due assi, verso cui si muoverà;
- il colore.
Le palline si muoveranno all'interno di una casella immagini, azionate da un semplice click su un bottone; viene dunque imposto che, una volta che le palline tocchino il bordo della casella immagini, esse "rimbalizino" su di esso, non fuoriuscendo dunque dalla schermata.
I comandi associati a tale funzione risulteranno:
Public Class PALLINA
Public passo As Integer
Public diam As Integer
Public x As Integer
Public y As Integer
Public versox As Boolean
Public versoy As Boolean
Public brush As Brush
Sub New(ByVal passou As Integer, ByVal diamu As Integer, ByVal xu As Integer, ByVal yu As Integer, ByVal versoxu As Boolean, ByVal versoyu As Boolean, ByVal brushu As Brush)
Me.passo = passou
Me.diam = diamu
Me.x = xu
Me.y = yu
Me.versox = versoxu
Me.versoy = versoyu
Me.brush = brushu
End Sub
Public Sub ridisegna(ByVal B As Bitmap, ByVal G As Graphics)
If x >= B.Width - diam Then
versox = True
End If
If y >= B.Height - diam Then
versoy = True
End If
If x <= 0 Then
versox = False
End If
If y <= 0 Then
versoy = False
End If
If versox Then
x -= passo
Else
x += passo
End If
If versoy Then
y -= passo
Else
y += passo
End If
G.FillEllipse(brush, x, y, diam, diam)
End Sub
End Class
E' possibile procedere, a questo punto, con la creazione dei due strumenti cui si faceva riferimento in precedenza. Nell'esempio di seguito riportato, ad un primo click dell'utente compaiono della casella di immagini sei palline, ciascuna con le proprie peculiari caratteristiche; ad ogni successivo click all'interno della stessa casella, compaiono altre sei palline con le medesime caratteristiche. Si avrà pertanto:
Public Class Form1
Public B As New Bitmap(600, 400)
Public G As Graphics = Graphics.FromImage(B)
Public L As New List(Of PALLINA)
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Dim p1 As New PALLINA(5, 30, 0, 0, False, False, Brushes.Fuchsia)
Dim p2 As New PALLINA(10, 30, 150, 50, False, False, Brushes.Indigo)
Dim p3 As New PALLINA(15, 30, 300, 300, False, False, Brushes.Blue)
Dim p4 As New PALLINA(20, 30, 80, 30, True, True, Brushes.Orange)
Dim p5 As New PALLINA(25, 30, 94, 73, True, True, Brushes.HotPink)
Dim p6 As New PALLINA(30, 30, 400, 500, False, False, Brushes.LightBlue)
L.Add(p1)
L.Add(p2)
L.Add(p3)
L.Add(p4)
L.Add(p5)
L.Add(p6)
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
G.Clear(Color.Black)
For Each P As PALLINA In Me.L
P.ridisegna(B, G)
Next
PictureBox1.Image = B
End Sub
End Class
Nessun commento:
Posta un commento