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


Popular Posts

Image

Bottle