vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Effekte   |   VB-Versionen: VB.NET01.01.03
Fenster Ein-/Ausblendeffekte II (.NET)

Erzeugen Sie nette Animationseffekte für Ihre Forms: Ausblenden, Einblenden, Schieben, Rollen, Dimmen usw.

Autor:   Richard MusiolBewertung:     [ Jetzt bewerten ]Views:  24.213 
www.richard-musiol.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Ich habe zufällig die API-Funktion AnimateWindow entdeckt und sofort eine Zugriffs-Prozedur geschrieben. Mann kann damit einige Fenstereffekte erzeugen. U.a. Einfaden, Ausfaden, Schieben, Rollen... Falls der Effekt nicht mit der Windows-Version kompatibel ist, oder ein anderer Fehler auftritt, wird die Form trotzdem ein-/ausgeblendet. Genauere Beschreibung zur Handhabung im Quellcode.

#Region "FensAnim"
 
' zunächst die benötigten API-Deklarationen
Private Declare Function AnimateWindow Lib "user32" ( _
  ByVal hwnd As Integer, _
  ByVal Time As Integer, _
  ByVal Flags As Integer) As Integer
 
Private Const AW_ACTIVATE = &H20000
Private Const AW_BLEND = &H80000
Private Const AW_CENTER = &H10
Private Const AW_SLIDE = &H40000
Private Const AW_HIDE = &H10000
Private Const AW_HOR_POSITIVE = &H1
Private Const AW_HOR_NEGATIVE = &H2
Private Const AW_VER_POSITIVE = &H4
Private Const AW_VER_NEGATIVE = &H8
Private Const WM_PAINT = &HF
 
Enum FensAnimArt As Integer
  EINBLENDEN
  AUSBLENDEN
End Enum
 
Enum FensAnimEffekt As Integer
  DIMMEN
  ROLLEN_SEITE
  ROLLEN_MITTE
  SCHIEBEN
End Enum
 
Enum FensAnimRichtung As Integer
  N
  NO
  O
  SO
  S
  SW
  W
  NW
End Enum
Private Sub FensAnim( _
  ByVal Fenster As Form, _
  ByVal Art As FensAnimArt, _
  ByVal Effekt As FensAnimEffekt, _
  ByVal Richtung As FensAnimRichtung, _
  ByVal Dauer_ms As Integer)
 
  ' Fehlerbehandlung aktivieren       
  Try
    Dim Flags As Integer = 0
 
    ' Flag Ein/Ausblenden
    Select Case Art
      Case FensAnimArt.EINBLENDEN
        Flags += AW_ACTIVATE
      Case FensAnimArt.AUSBLENDEN
        Flags += AW_HIDE
    End Select
 
    ' Effect-Flag addieren
    Select Case Effekt
      Case FensAnimEffekt.ROLLEN_SEITE
        Flags += 0
      Case FensAnimEffekt.ROLLEN_MITTE
        Flags += AW_CENTER
      Case FensAnimEffekt.SCHIEBEN
        Flags += AW_SLIDE
      Case FensAnimEffekt.DIMMEN
        Flags += AW_BLEND
    End Select
 
    ' Richtungs-Flags addieren
    Select Case Richtung
      Case FensAnimRichtung.N
        Flags += AW_VER_NEGATIVE
      Case FensAnimRichtung.NO
        Flags += AW_VER_NEGATIVE + AW_HOR_POSITIVE
      Case FensAnimRichtung.O
        Flags += AW_HOR_POSITIVE
      Case FensAnimRichtung.SO
        Flags += AW_VER_POSITIVE + AW_HOR_POSITIVE
      Case FensAnimRichtung.S
        Flags += AW_VER_POSITIVE
      Case FensAnimRichtung.SW
        Flags += AW_VER_POSITIVE + AW_HOR_NEGATIVE
      Case FensAnimRichtung.W
        Flags += AW_HOR_NEGATIVE
      Case FensAnimRichtung.NW
        Flags += AW_VER_NEGATIVE + AW_HOR_NEGATIVE
    End Select
 
    ' Animation ausführen
    ' (Programm/Thread ist solange pausiert)
    AnimateWindow(Fenster.Handle.ToInt32, Dauer_ms, Flags)
  Catch : End Try
 
  ' sicherheits Fenster anzeigen/verstecken
  ' (falls Animation fehlschlägt!)
  Select Case Art
    Case FensAnimArt.EINBLENDEN
      Fenster.Show()
    Case FensAnimArt.AUSBLENDEN
      Fenster.Hide()
  End Select
 
  ' sicherheitshalber Neuzeichnen
  ' (um Grafikfehler zu vermeiden)
  Fenster.Refresh()
End Sub
 
#End Region

Beschreibung der Parameter:

Fenster: die Form die animiert werden soll

Art:

  • EINBLENDEN: Fenster wird eingeblendet (bei sichtbaren Fenstern geschieht nichts)
  • AUSBLENDEN: Fenster wird ausgeblendet (bei unsichtbaren Fenstern geschieht nichts)

    Effekt: (probier' sie einfach aus)

  • DIMMEN: Fenster Ein-/Ausdimmen (Richtung wird ignoriert)
  • ROLLEN_SEITE: Fenster wird von einer Seite/Ecke aus sichtbar/unsichtbar (Richtung -> in diese Richtung wird gerollt)
  • ROLLEM_MITTE: Fenster wird von der Mitte aus sichtbar/zur Mitte hin unsichtbar (Richtung wird ignoriert)
  • SCHIEBEN: Fenster wird von/zu einer Seite/Ecke eingeschoben/ausgeschoben (Richtung -> in diese Richtung wird geschoben)

    Richtung: siehe Effekte

    Dauer_ms: Dauer der gesamten Animation in Millisekunden

    Beispiel für den Aufruf:

    Private Sub Form1_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load 
     
      ' Einblenden
      FensAnim(Me, EINBLENDEN, SCHIEBEN, W, 500)
    End Sub
     
    Private Sub Form1_Closed(ByVal sender As Object, _
      ByVal e As System.EventArgs) Handles MyBase.Closed 
     
      ' Ausblenden
      FensAnim(Me, AUSBLENDEN, DIMMEN, W, 500)
    End Sub

  • Dieser Tipp wurde bereits 24.213 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Aktuelle Diskussion anzeigen (3 Beiträge)

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
    (einschl. Beispielprojekt!)

    Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
    - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
    - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
    Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
     
       

    Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel