venerdì 11 aprile 2014

OGGETTI GRAFICI e PROGRAMMAZIONE AD OGGETTI

Per procedere con l'analisi di elementi grafici di Visual Basic bisogna prima capire come sia possibile creare delle funzioni che costruiscano oggetti grafici.
Inizialmente creiamo una funzione alla quale attribuiamo il nome PALLINA e attraverso la quale posso disegnare una più palline che si muoveranno su una casella immagini e inizieranno al loro corsa attraveso un click sul bottone. Ogni pallina ha diverse qualità:

  • velocità (o passo con cui si muove), indicata con passo;
  • coordinate di partenza, indicate con x e y;
  • direzione (o verso), indicata con verso versox e versoy;
  • diametro, indicato con diam;
  • colore, indicato con brush.

Nella parte di programma sottostante, indico le caratteristiche della pallina, e impongo nella parte inferiore il rimbalzo sulle pareti.


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 passoP As Integer, ByVal diamP As Integer, ByVal xP As Integer, ByVal yP As Integer, ByVal versoxP As Boolean, ByVal versoyP As Boolean, ByVal brushP As Brush)
        Me.passo = passoP
        Me.diam = diamP
        Me.x = xP
        Me.y = yP
        Me.versox = versoxP
        Me.versoy = versoyP
        Me.brush = brushP
    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


Nella parte sottostante, invece, creo sei palline con le caratteristiche definite in precedenza. si ottiene pertanto:


Public Class Form1
    Public B As New Bitmap(800, 600)
    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, 130, 30, False, False, Brushes.Indigo)
        Dim p3 As New PALLINA(15, 30, 200, 200, True, False, Brushes.Blue)
        Dim p4 As New PALLINA(20, 30, 80, 30, True, True, Brushes.Orange)
        Dim p5 As New PALLINA(25, 30, 90, 70, 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