Animierte Picturebox

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Animierte Picturebox

    Hi,

    ich habe folgendes problem. ich habe eine picturebox und möchte, wenn ich mit der maus auf diese picturebox komme, das sich die picturebox ein klein wenig vergrößert.
    aber ich weiss nicht wie ich es machen soll. hab schon versucht per mousemove die größe etwas zu erhöhen. aber das ging in die hose :(

    mfg chris :)
    Moin

    eine frage soll das Pic an der Stelle vergrößert werden wo die maus ist oder einfach nur so. ??


    MFG Azu
    _-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-_

    MFG

    _-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-__-_-_
    Das MouseEnter wird ausgelöst, wenn die Maus den Bereich des Controls betritt.
    Daher kannst du dort die Größe verändern.
    Beispiel:

    VB.NET-Quellcode

    1. Private Sub PictureBox1_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.MouseEnter
    2. PictureBox1.Tag = PictureBox1.Size
    3. PictureBox1.Size = New Size(PictureBox1.Size.Width + 20, PictureBox1.Size.Width + 20)
    4. End Sub
    5. Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.MouseLeave
    6. PictureBox1.Size = DirectCast(PictureBox1.Tag, Size)
    7. End Sub
    Allerdings ist das keineswegs eine gute Lösung.
    Am besten wäre es, eine eigene Klasse zu erstellen und diese von PictureBox abzuleiten.
    Dann kannst du die OnMouseEnter-Methode behandeln, in der du die PictureBox nach einer weiteren Eigenschaft vergrößern kannst.
    Willst du sone Art "Bubbleeffekt" haben? Also, dass sich die Picturebox vergrößert, wenn man mit der Maus darüber fährt und wieder verkleinert, wenn man runter geht.

    Naja - was du machen willst ist ja eigentlich egal.
    Sieh dir mal Picturebox1.Size und evt. Picturebox1.Location.

    Wenn du im Code-Editor bist kannst du oben Links das Control (in diesem Fall die Picturebox1) auswählen und in der Rechten Box das Event (In diesem Fall MouseEnter oder ähnliches)
    ja genau sone art "Bubbleeffekt" wäre echt super.

    als ich versucht hatte die picturebox zu vergrößern, vergrößerte sich die picturebox nur in eine richtung.
    super wäre es wenn sie nach allen seiten etwas vergrößert. muss nur minimal sein. sodass man sieht welche picturebox man angwählt hat. :) danke für die hilfe :)
    Da musst du mit ein klein wenig Mathematik ran.
    Sagen wir mal, du willst die PictureBox beim Eintreten der Maus um 20 Pixel in jede Achse vergrößern.
    Dann verschiebst du sie 20/2 Pixel nach oben und links und vergrößerst sie um (20 - 20/2) Pixel.
    Das sieht überkompliziert aus, aber der Vollständigkeit halber habe ich es so aufgeschrieben.
    Einfach gesagt: Jeweils 10 Pixel nach oben und links, jeweils 10 Pixel in jede Richtung vergrößern.
    Mach es so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub PictureBox1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
    3. Dim si As Size = PictureBox1.Size
    4. Dim lo As Point = PictureBox1.Location
    5. si.Width += 20
    6. si.Height += 20
    7. lo.X -= 10
    8. lo.Y -= 10
    9. PictureBox1.Size = si
    10. PictureBox1.Location = lo
    11. End Sub
    12. Private Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
    13. Dim si As Size = PictureBox1.Size
    14. Dim lo As Point = PictureBox1.Location
    15. si.Width -= 20
    16. si.Height -= 20
    17. lo.X += 10
    18. lo.Y += 10
    19. PictureBox1.Size = si
    20. PictureBox1.Location = lo
    21. End Sub
    22. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!