Surrealist Collage Animated
For my 2023 art studio class, I animated my final art project from my senior year of high school using Visual Basic. Once again, WinForms app build, motion equations, and the like. I used several timers to create flickering effects.
Original work.
I find this collage to be a kind of looking glass into my neurological processes. It is chaotic, and sometimes what you see does not make sense at first.
Public Class Form1
Private manor As Image
Private ponyoFishGroup As Image
Private ponyoFishSingular3 As Image
Private ponyoFishSingular2 As Image
Private ponyoFishSingular As Image
Private lucifer As Image
Private luciferTranslucent As Image
Private drWilson As Image
Private vampireAndria As Image
Private wolfAsami As Image
Private self As Image
Private haze As Image
Private ghostAdham As Image
Private ghostAdhamTranslucent As Image
Private ghostAndria As Image
Private ghostAndriaTranslucent As Image
Private blueRocks As Image
Private stoneAsami As Image
Private calebAndElenore As Image
Private rockPattern As Image
Private frausAsami As Image
Private vampireWill As Image
Private asami As Image
Private sunGod As Image
Private frontTrees As Image
Private lepidolite() As Image
Private diameter As Single = 50
Private lepidoliteSpeed() As Single
Private lepidoliteXPos() As Single
Private lepidoliteYPos() As Single
Private curveSlowerDowner() As Single
Private frameCount = 60
Private ponyoFishSingular3XPos As Single
Private ponyoFishSingular2XPos As Single
Private ponyoFishSingularXPos As Single
Private ponyoFishSingular3YPos As Single
Private ponyoFishSingular2YPos As Single
Private ponyoFishSingularYPos As Single
Private ponyoFishSingularSpeedX As Single
Private ponyoFishSingularSpeedY As Single
Private pictureWidth As Single
Private pictureHeight As Single
Private stoneAsamiSpeed As Single
Private stoneAsamiXPos As Single
Private stoneAsamiXDirection As Single
Private flickerLucifer As Boolean
Private flickerAdham As Boolean
Private flickerAndria As Boolean
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer2.Enabled = True
Timer3.Enabled = True
Timer4.Enabled = True
Timer1.Interval = 33
Timer2.Interval = 100
Timer3.Interval = 125
Timer4.Interval = 150
Timer1.Start()
Timer2.Start()
Timer3.Start()
Timer4.Start()
pictureWidth = 1125
pictureHeight = 1000
manor = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\manor.png")
ponyoFishGroup = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ponyo fish GROUP.png")
ponyoFishSingularXPos = 0
ponyoFishSingular3YPos = 0
ponyoFishSingular2YPos = 0
ponyoFishSingularYPos = 0
ponyoFishSingularSpeedX = -10
ponyoFishSingularSpeedY = -10
ponyoFishSingular3 = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ponyo fish SINGULAR 3.png")
ponyoFishSingular2 = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ponyo fish SINGULAR 2.png")
ponyoFishSingular = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ponyo fish SINGULAR.png")
lucifer = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\lucifer.png")
luciferTranslucent = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\lucifer tranlucent.png")
drWilson = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\dr. wilson.png")
vampireAndria = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\vampire andria.png")
wolfAsami = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\wolf asami.png")
self = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\self.png")
haze = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\haze.png")
ghostAdham = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ghost adham.png")
ghostAdhamTranslucent = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ghost adham translucent.png")
ghostAndria = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ghost andria.png")
ghostAndriaTranslucent = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\ghost andria translucent.png")
blueRocks = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\blue rocks.png")
stoneAsami = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\stone asami.png")
stoneAsamiSpeed = 0.5
stoneAsamiXDirection = 1
stoneAsamiXPos = 0
calebAndElenore = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\caleb and elenore.png")
rockPattern = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\rock pattern.png")
frausAsami = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\fraus asami.png")
vampireWill = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\vampire will.png")
asami = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\asami.png")
sunGod = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\sun god.png")
frontTrees = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\front trees.png")
ReDim lepidolite(75)
ReDim lepidoliteXPos(75)
ReDim lepidoliteYPos(75)
ReDim lepidoliteSpeed(75)
ReDim curveSlowerDowner(75)
For n = 0 To 74
lepidoliteXPos(n) = Rnd() * 1125
lepidoliteYPos(n) = 90
lepidoliteSpeed(n) = 21 * Rnd() - 10
curveSlowerDowner(n) = (51 * Rnd() + 25)
lepidolite(n) = Bitmap.FromFile("C:\Users\genev\Documents\art 185 XX\lepidolite small.png")
Next
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label1.Invalidate()
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
Label1.Invalidate()
flickerLucifer = Not flickerLucifer
End Sub
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
Label1.Invalidate()
flickerAdham = Not flickerAdham
End Sub
Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
Label1.Invalidate()
flickerAndria = Not flickerAndria
End Sub
Private Sub Label1_Paint(sender As Object, e As PaintEventArgs) Handles Label1.Paint
frameCount += 1
Dim gr0 = e.Graphics
gr0.DrawImage(manor, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(self, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(vampireAndria, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(calebAndElenore, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(vampireWill, 0, 0, pictureWidth, pictureHeight)
For n = 0 To 74
lepidoliteXPos(n) = lepidoliteXPos(n) + Math.Sin(frameCount / curveSlowerDowner(n))
lepidoliteYPos(n) = lepidoliteYPos(n) - lepidoliteSpeed(n)
If lepidoliteYPos(n) > Label1.Height Then
lepidoliteYPos(n) = 90
End If
gr0.DrawImage(lepidolite(n), lepidoliteXPos(n), lepidoliteYPos(n), diameter, diameter)
Next
gr0.DrawImage(ponyoFishGroup, 0, 0, pictureWidth, pictureHeight)
ponyoFishSingular3XPos = ponyoFishSingular3XPos + ponyoFishSingularSpeedX
ponyoFishSingular2XPos = ponyoFishSingular2XPos + ponyoFishSingularSpeedX
ponyoFishSingularXPos = ponyoFishSingularXPos + ponyoFishSingularSpeedX
ponyoFishSingular3YPos = ponyoFishSingular3YPos - ponyoFishSingularSpeedY
If ponyoFishSingular3XPos + 897 < 0 Then
ponyoFishSingular3XPos = 0
End If
If ponyoFishSingular3YPos + 580 > Label1.Height Then
ponyoFishSingular3YPos = 0
End If
gr0.DrawImage(ponyoFishSingular3, ponyoFishSingular3XPos, ponyoFishSingular3YPos, pictureWidth, pictureHeight)
ponyoFishSingular2YPos = ponyoFishSingular2YPos + 15
If ponyoFishSingular2XPos + 1088 < 0 Then
ponyoFishSingular2XPos = 0
End If
If ponyoFishSingular2YPos + 639 > Label1.Height Then
ponyoFishSingular2YPos = 0
End If
gr0.DrawImage(ponyoFishSingular2, ponyoFishSingular2XPos, ponyoFishSingular2YPos, pictureWidth, pictureHeight)
ponyoFishSingularYPos = ponyoFishSingularYPos + 20
If ponyoFishSingularXPos + 607 < 0 Then
ponyoFishSingularXPos = 0
End If
If ponyoFishSingularYPos + 669 > Label1.Height Then
ponyoFishSingularYPos = 0
End If
gr0.DrawImage(ponyoFishSingular, ponyoFishSingularXPos, ponyoFishSingularYPos, pictureWidth, pictureHeight)
If flickerLucifer Then
gr0.DrawImage(lucifer, 0, 0, pictureWidth, pictureHeight)
Else
gr0.DrawImage(luciferTranslucent, 0, 0, pictureWidth, pictureHeight)
End If
gr0.DrawImage(drWilson, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(wolfAsami, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(haze, 0, 0, pictureWidth, pictureHeight)
If flickerAdham Then
gr0.DrawImage(ghostAdham, 0, 0, pictureWidth, pictureHeight)
Else
gr0.DrawImage(ghostAdhamTranslucent, 0, 0, pictureWidth, pictureHeight)
End If
If flickerAndria Then
gr0.DrawImage(ghostAndria, 0, 0, pictureWidth, pictureHeight)
Else
gr0.DrawImage(ghostAndriaTranslucent, 0, 0, pictureWidth, pictureHeight)
End If
gr0.DrawImage(blueRocks, 0, 0, pictureWidth, pictureHeight)
stoneAsamiXPos += stoneAsamiSpeed * stoneAsamiXDirection
If stoneAsamiXPos = 5 Then
stoneAsamiXDirection *= -1
End If
If stoneAsamiXPos = -1 Then
stoneAsamiXDirection *= -1
End If
gr0.DrawImage(stoneAsami, stoneAsamiXPos, 0, pictureWidth, pictureHeight)
gr0.DrawImage(rockPattern, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(frausAsami, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(asami, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(sunGod, 0, 0, pictureWidth, pictureHeight)
gr0.DrawImage(frontTrees, 0, 0, pictureWidth, pictureHeight)
End Sub
Private Sub Label1_DoubleClick(sender As Object, e As EventArgs) Handles Label1.DoubleClick
Me.Close()
End Sub
End Class


