giovedì 3 aprile 2014

Introduzione agli oggetti grafici e programmazione degli oggetti

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