vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück
Rubrik: Grafik und Font · Grafische Effekte   |   VB-Versionen: VB4, VB5, VB611.07.03
Grafische Fortschrittsleiste

Hier wird an einem Beispiel beschrieben, wie Sie eine grafische Fortschrittsleiste erstellen, bei der der Umriss einer Figur langsam ausgefüllt wird.

Autor:   DartraxBewertung:     [ Jetzt bewerten ]Views:  15.895 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

"Wie kann man so eine Fortschrittsleist erstellen?"

Grafische Fortschrittsanzeige

Genau diese Frage wurde vor kurzem im Forum gestellt.
Für die Lösung musste ich das Bild oben etwas bearbeiten und ein Maskenbild,

Maskenbild

ein Sprite,

Sprite

und ein Hintergrundbild mit der eigendlichen Laufleiste erstellen:

Hintergrundbild

Alle Bilder werden in Pictureboxen eingefügt, wobei die Picturebox mit dem Hintergrundbild die Einstellung BorderStyle=0 zugewiesen bekommt und wiederum in eine Picturebox eingefügt wird. Die anderen beiden Pictureboxen werden mit der Eigenschaft Visible=False zur Laufzeit unsichtbar.

Jetzt ist noch wichtig, dass bei ALLEN Pictureboxen AutoRedraw auf True geschaltet wird!

Damit wir das Ganze auch testen können, setzen wir noch einen Timer (Interval=100, Enabled=False) und einen Button auf die Form.

Doch vorher noch der Code. Zunächst die benötigte API-Deklaration und die dazugehörigen Konstanten:

Private Declare Function BitBlt Lib "gdi32" ( _
  ByVal hDestDC As Long, _
  ByVal X As Long, _
  ByVal Y As Long, _
  ByVal nWidth As Long, _
  ByVal nHeight As Long, _
  ByVal hSrcDC As Long, _
  ByVal xSrc As Long, _
  ByVal ySrc As Long, _
  ByVal dwRop As Long) As Long
 
' (DWORD) dest = source AND dest
Private Const SRCAND = &H8800C6 
 
' (DWORD) dest = source XOR dest
Private Const SRCINVERT = &H660046

Jetzt programmieren wir mit dieser API eine Funktion Draw, die uns den Inhalt der beiden unsichtbaren Pictureboxen zu einem teiltransparenten Bild zusammenfügt und auf den Hintergrund zeichnet. Mit dem Parameter "Fortschritt" übergeben wir die Angabe in Pixeln, wie weit die Leiste schon vorgerückt sein soll:

Private Function Draw(Fortschritt As Integer)
  ' Erstellen eines Transparenten Bildes im Speicher
  With PicMask
    BitBlt PicLeiste.hDC, 0, 0, .Width, .Height, _
      .hDC, 0, 0, SRCAND
    BitBlt PicLeiste.hDC, 0, 0, .Width, .Height, _
      PicSprite.hDC, 0, 0, SRCINVERT
 
    ' Das vorherige Bild in der Leiste löschen
    PicLeiste.Cls
 
    ' Die Leiste an die gewünschte Position bringen
    PicLeiste.Left = -237 + Fortschritt
 
    ' Das Bild aus dem Speicher auf die Leiste zeichnen
    BitBlt PicLeiste.hDC, 237 - Fortschritt, 0, _
      .Width, .Height, .hDC, 0, 0, SRCAND
    BitBlt PicLeiste.hDC, 237 - Fortschritt, 0, _
      .Width, .Height, PicSprite.hDC, 0, 0, SRCINVERT
  End With
End Function

Diese Draw-Funktion wird in unserem Beispiel durch den Timer aufgerufen:

Private Sub Timer1_Timer()
  Static Fortschritt As Integer
 
  If Fortschritt < 237 Then
    Fortschritt = Fortschritt + 1
  Else
    Fortschritt = 0
    Timer1.Enabled = False
  End If
  Draw Fortschritt
End Sub

Starten kann man den Timer mit dem Button:

Private Sub Command1_Click()
  Timer1.Enabled = True
End Sub

Und damit schon beim Start der Hintergrund angezeigt wird, führen wir auch beim Form_Load-Ereignis die Draw-Funktion aus, allerdings mit 0 Fortschritt!

Private Sub Form_Load()
  Draw 0
End Sub

Dieser Tipp wurde bereits 15.895 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.

Neue Diskussion eröffnen

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-2021 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