Montag, 1. April 2013

Visual Basic 2012 Excel 2013 Bildschirmschoner Animation programmieren von Selzer-McKenzie SelMcKenzie


Visual Basic 2012 Excel 2013 Bildschirmschoner Animation programmieren von Selzer-McKenzie SelMcKenzie



 

 

Author D.Selzer-McKenzie

Heute zeige ich Ihnen, wie Sie mit Visual Basic 2005,2008,2010 oder 2012 und mit Excel eine interessante Animation, bewegende Bilder auf dem Bildschirm, auch als Bildschirmschoner geeignet, programmieren können.

Nachstehend nun der komplette Source-Code:

 

Const FigurenGrösse As Integer = 300

    Dim PositionX, PositionY As Integer

    Dim AltePositionX, AltePositionY As Integer

    Dim BewegungsVektorX, BewegungsVektorY As Integer

    Dim DrehungsWinkel As Integer

    Dim DrehGeschwindigkeit As Integer

    Dim Hintergrund As Brush

    Private Sub BildschirmschonerFormInitialisierung_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim random As New Random()

        Me.MinimumSize = New Size(FigurenGrösse * 2, FigurenGrösse * 2)

        Me.SetStyle(ControlStyles.DoubleBuffer Or _

          ControlStyles.UserPaint Or _

          ControlStyles.AllPaintingInWmPaint Or _

          ControlStyles.ResizeRedraw Or _

          ControlStyles.Opaque, True)

        BewegungsVektorX = 3 + random.Next(5)

        BewegungsVektorY = 3 + random.Next(5)

        DrehGeschwindigkeit = 3 + random.Next(5)

        PositionX = CInt((Me.ClientSize.Width - FigurenGrösse - 1) * random.NextDouble)

        PositionY = CInt((Me.ClientSize.Height - FigurenGrösse - 1) * random.NextDouble)

    End Sub

    Private Sub BildschirmschonerFormInitialisierung_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize

        If Not IsNothing(Hintergrund) Then Hintergrund.Dispose()

        Hintergrund = New TextureBrush(New Bitmap(BildTextur.Image))

    End Sub

    Private Sub BildschirmschonerForm1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

        Dim Zeichnen As Graphics = e.Graphics

        Dim Füllung As Brush

        Füllung = New TextureBrush(New Bitmap(BildKessel.Image))

        If IsNothing(Hintergrund) Then BildschirmschonerFormInitialisierung_Resize(Nothing, Nothing)

        Zeichnen.FillRectangle(Hintergrund, 0, 0, Me.ClientSize.Width, Me.ClientSize.Height)

        Zeichnen.FillPie(Füllung, PositionX, PositionY, FigurenGrösse, FigurenGrösse, DrehungsWinkel, 300)

    End Sub

    Private Sub TimerSteuerelement_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerSteuerelement.Tick

        Dim rect As Rectangle

        Dim w, h As Integer

        w = Me.ClientSize.Width - FigurenGrösse

        h = Me.ClientSize.Height - FigurenGrösse

        DrehungsWinkel = (DrehungsWinkel + DrehGeschwindigkeit) Mod 360

        PositionX += BewegungsVektorX

        If PositionX < 0 Then

            PositionX = 0

            BewegungsVektorX *= -1

        ElseIf PositionX > w Then

            PositionX = w

            BewegungsVektorX *= -1

        End If

        PositionY += BewegungsVektorY

        If PositionY < 0 Then

            PositionY = 0

            BewegungsVektorY *= -1

        ElseIf PositionY > h Then

            PositionY = h

            BewegungsVektorY *= -1

        End If

        rect = Rectangle.Union( _

          New Rectangle(PositionX - 1, PositionY - 1, FigurenGrösse + 2, FigurenGrösse + 2), _

          New Rectangle(AltePositionX - 1, AltePositionY - 1, FigurenGrösse + 2, FigurenGrösse + 2))

        Me.Invalidate(rect)

        AltePositionX = PositionX

        AltePositionY = PositionY

    End Sub

End Class

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.