Snow Animation : Animation « 2D Graphics « VB.Net Tutorial






Snow Animation
'Visual Basic.Net JingCai Programming 100 Examples
'Author: Yong Zhang
'Publisher: Water Publisher China
'ISBN: 750841156


Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms

public class Snow
   public Shared Sub Main
        Application.Run(New Form1)
   End Sub
End class

Public Class Form1
    Inherits System.Windows.Forms.Form

    Public Sub New()
        MyBase.New()

        InitializeComponent()

    End Sub

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    Private components As System.ComponentModel.IContainer

    Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
    Friend WithEvents Timer1 As System.Windows.Forms.Timer
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container
        Me.PictureBox1 = New System.Windows.Forms.PictureBox
        Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
        Me.SuspendLayout()
        '
        'PictureBox1
        '
        Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.PictureBox1.Location = New System.Drawing.Point(0, 0)
        Me.PictureBox1.Name = "PictureBox1"
        Me.PictureBox1.Size = New System.Drawing.Size(292, 266)
        Me.PictureBox1.TabIndex = 0
        Me.PictureBox1.TabStop = False
        '
        'Timer1
        '
        Me.Timer1.Enabled = True
        Me.Timer1.Interval = 10
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.Add(Me.PictureBox1)
        Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
        Me.ResumeLayout(False)

    End Sub

    Dim number, x(), y(), v(), s() As Integer
    Dim t As Random = New Random
    Dim g As System.Drawing.Graphics
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        PictureBox1.Location = Me.Location
        PictureBox1.Size = Me.Size
        PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
        snow()
    End Sub
    Private Sub snow()
        number = 2000
        ReDim x(number - 1)
        ReDim y(number - 1)
        ReDim v(number - 1)
        ReDim s(number - 1)
        Dim i As Integer
        For i = 0 To number - 1
            Insnow(i)
        Next
    End Sub
    Private Sub Insnow(ByVal i As Integer)
        x(i) = t.Next(0, Me.Width - 1)
        y(i) = t.Next(0, Me.Height * 5 / 7)
        v(i) = t.Next(5, 20)
        s(i) = (t.Next(1, 3) * 100 + t.Next(50, 200)) / 100
    End Sub

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        g = PictureBox1.CreateGraphics
        Dim i As Integer
        For i = 0 To number - 1
            g.FillEllipse(Brushes.White, x(i), y(i), s(i), s(i))
        Next
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim i As Integer
        For i = 0 To number - 1
            y(i) = y(i) + v(i)
            If y(i) >= Me.Height Then
                Insnow(i)
            End If
        Next
        PictureBox1.Invalidate()
    End Sub
End Class








17.90.Animation
17.90.1.Animator
17.90.2.Snow AnimationSnow Animation
17.90.3.Program that animates a series of images
17.90.4.Scrolling Text by TimerScrolling Text by Timer