Lesson 33: Creating Animation in VB2022
Bring your applications to life with dynamic animations using Timer control and graphics programming
Key Takeaway
The Timer control combined with graphics programming enables you to create smooth animations by updating object positions at regular intervals.
Welcome to Lesson 33 of our Visual Basic 2022 Tutorial! Building on the Timer control from the previous lesson, we'll explore how to create engaging animations in your applications. Animation brings visual interest to your programs and can enhance user experience significantly.
33.1 Animation Fundamentals
Animation in VB2022 is achieved by combining the Timer control with graphics programming. The basic principle involves:
Timer Control
Triggers updates at regular intervals (frame rate)
Graphics Object
Used to draw and redraw objects on the screen
Position Updates
Changing coordinates to create movement
Pro Tip: Frame Rate
For smooth animation, use intervals between 16-33ms (30-60 FPS). Lower intervals = smoother animation but higher CPU usage.
Example 33.1: Basic Motion Animation
This example shows how to create a simple moving object:
Public Class AnimationForm Private ballX As Integer = 50 Private ballSpeed As Integer = 5 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Set up timer with 30 FPS Timer1.Interval = 33 ' ≈30 frames per second End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick ' Update ball position ballX += ballSpeed ' Reverse direction at edges If ballX > PictureBox1.Width - 40 Or ballX < 0 Then ballSpeed *= -1 End If ' Redraw the ball PictureBox1.Refresh() End Sub Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint ' Draw the moving ball e.Graphics.FillEllipse(Brushes.Red, ballX, 50, 40, 40) End Sub End Class
33.2 Creating a Graphical Dice
This example creates an animated dice using graphics methods:
Public Class DiceForm Private rnd As New Random() Private Sub BtnRoll_Click(sender As Object, e As EventArgs) Handles BtnRoll.Click Timer1.Enabled = True End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Static rollCount As Integer = 0 rollCount += 1 ' Stop after 20 rolls If rollCount > 20 Then Timer1.Enabled = False rollCount = 0 Return End If ' Clear and redraw dice DiceBox.Refresh() ' Draw dice border Dim g As Graphics = DiceBox.CreateGraphics g.DrawRectangle(Pens.Black, 10, 10, 120, 120) ' Generate random dice value Dim diceValue As Integer = rnd.Next(1, 7) ' Draw dots based on value Select Case diceValue Case 1 ' Center dot g.FillEllipse(Brushes.Black, 60, 60, 20, 20) Case 2 ' Top-left and bottom-right g.FillEllipse(Brushes.Black, 30, 30, 20, 20) g.FillEllipse(Brushes.Black, 90, 90, 20, 20) ' Additional cases for other values... End Select End Sub End Class
33.3 Bouncing Ball with Physics
Create a realistic bouncing ball with gravity physics:
Public Class BouncingBallForm Private ballX As Single = 50 Private ballY As Single = 50 Private velocityX As Single = 3 Private velocityY As Single = 0 Private gravity As Single = 0.2 Private friction As Single = 0.99 Private ballSize As Integer = 40 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Timer1.Interval = 16 ' ≈60 FPS End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick ' Apply gravity velocityY += gravity ' Update position ballX += velocityX ballY += velocityY ' Boundary collision If ballX <= 0 Then ballX = 0 velocityX = Math.Abs(velocityX) * friction ElseIf ballX >= BallBox.Width - ballSize Then ballX = BallBox.Width - ballSize velocityX = -Math.Abs(velocityX) * friction End If If ballY <= 0 Then ballY = 0 velocityY = Math.Abs(velocityY) * friction ElseIf ballY >= BallBox.Height - ballSize Then ballY = BallBox.Height - ballSize velocityY = -Math.Abs(velocityY) * friction End If ' Redraw ball BallBox.Refresh() End Sub Private Sub BallBox_Paint(sender As Object, e As PaintEventArgs) Handles BallBox.Paint ' Draw the bouncing ball Dim ballBrush As New Drawing2D.LinearGradientBrush( New Point(ballX, ballY), New Point(ballX + ballSize, ballY + ballSize), Color.Red, Color.DarkRed) e.Graphics.FillEllipse(ballBrush, ballX, ballY, ballSize, ballSize) e.Graphics.DrawEllipse(Pens.DarkRed, ballX, ballY, ballSize, ballSize) End Sub End Class
Animation Techniques Summary
Master these essential techniques for creating animations in VB2022:
Technique | Description | Best For |
---|---|---|
Position Animation | Changing object coordinates over time | Moving objects, slideshows |
Property Animation | Modifying properties (size, color, opacity) | Fade effects, growing/shrinking |
Frame-based Animation | Displaying sequence of images | Character animation, sprites |
Physics-based Animation | Simulating real-world physics | Games, realistic motion |
Performance Tips
Use DoubleBuffered = True on containers to reduce flicker. Minimize object creation in animation loops.
Smooth Animation
For fluid motion, maintain consistent frame rates. Use System.Diagnostics.Stopwatch for precise timing.
Advanced Techniques
Explore WPF for more advanced animations. Consider using game engines for complex projects.
Practical Exercises
Apply your animation knowledge with these hands-on exercises:
Exercise 1: Solar System Simulator
Create an animation showing planets orbiting the sun at different speeds and distances.
Exercise 2: Progress Indicator
Design an animated loading spinner with smooth rotation and color transitions.
Exercise 3: Bouncing Balls Collision
Expand the bouncing ball example to include multiple balls that collide with each other.
Exercise 4: Animated Clock
Create an analog clock with smoothly moving hour, minute, and second hands.
Exercise 5: Particle System
Implement a fire or explosion effect using a particle system with physics.
Challenge Exercise: Platform Game Character
Create a character that can run, jump, and interact with platforms using sprite animation and physics.
Next Lesson
Learn how to work with databases in Lesson 34: Database Introduction.
Related Resources

Visual Basic 2022 Made Easy
The ultimate beginner-friendly guide for mastering Windows-based application development using Visual Basic in Visual Studio 2022. Whether you're a student, teacher, hobbyist, or self-learner, this book offers a clear, step-by-step approach to help you get started with ease.
What You'll Learn:
- Control structures and procedures
- Decision-making techniques
- Efficient code organization
- Practical application development
- Best practices in VB2022

Mastering Excel VBA 365
Your ultimate step-by-step guide to automating tasks, building macros, and creating powerful applications within Microsoft Excel 365. Whether you're a student, business professional, or aspiring programmer, this comprehensive handbook will help you unlock the full potential of Excel's VBA.
What You'll Learn:
- Control structures in VBA
- Decision-making techniques
- Data processing and analysis
- Report generation
- Automated workflows