Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Bildschirmschoner Erweiterungen

von RedakteurVoltaSeite 4 von 4

1. Testmodus
2. Abbruch bei Mausbewegung
_ 2.1. Mausabfrage
_ 2.2. ScreenEvent ab FB 0.17b

3. Kleine bunte Animation

Aus diesem kleinen Listing, das einmal einen Ball simulierte der von den Begrenzungen abprallt, lies sich schnell ein sehr bunter Screensaver erstellen.

Dim As Integer x=0, y=0, xs, ys, breite, hoehe, radius, farbe
Screen 18, 32  ' Grafik initialisieren

Setmouse ,,0       ' Maussymbol nicht anzeigen
Randomize Timer
Screeninfo breite, hoehe
xs = breite \100   'horizontale Geschwindigkeit
ys = hoehe \80     'vertikale Geschwindigkeit
radius = (Rnd(4) +xs +ys) \2
farbe = &H0ff000   'Ausgangsfarbe

Do
  Screenlock 'verhindert unschönes Bildschirmflimmern
  'Circle (x, y), radius, 0,,, 1, F 'Ball an alter Position löschen
  x += xs 'horizontale Position
  y += ys   'vertikale Position
  If x >= breite Or x <= 0 Then 'Rand rechts oder links berührt
    xs = -xs     'dann horizontale Geschwindigkeit umkehren
    farbe Shl= 1 'Farbe ändert sich nicht immer im gleichen Rhythmus
  End If
  If y >= hoehe Or y <= 0 Then ys = -ys 'Rand oben oder unten berührt
  farbe += Rnd()*4                      'Farbe ändern
  Circle (x, y), radius, farbe,,, 1, F  'neuen Ball zeichnen
  Screenunlock 'verhindert unschönes Bildschirmflimmern

  If Inkey <> "" Then Exit Do 'Taste zum Abbruch betätigt
  Sleep 20,1                  ' senkt die Ballgeschwindigkeit
Loop
End

Daraus braucht man einmal den Teil der die nötigen Variablen dimensioniert und ihnen den Anfangswert zuweist.

Dim As Integer x=0, y=0, xs, ys, breite, hoehe, radius, farbe
Randomize Timer
Screeninfo breite, hoehe
xs = breite \100   'horizontale Geschwindigkeit
ys = hoehe \80     'vertikale Geschwindigkeit
radius = (Rnd(4) +xs +ys) \2
farbe = &H0ff000   'Ausgangsfarbe

Für die DO..LOOP Schleife brauchen wir den Teil, der zwischen 'Screenlock .. Screenunlock' steht.

  Screenlock 'verhindert unschönes Bildschirmflimmern
  x += xs 'horizontale Position
  y += ys   'vertikale Position
  If x >= breite Or x <= 0 Then 'Rand rechts oder links berührt
    xs = -xs     'dann horizontale Geschwindigkeit umkehren
    farbe Shl= 1 'Farbe ändert sich nicht immer im gleichen Rhythmus
  End If
  If y >= hoehe Or y <= 0 Then ys = -ys 'Rand oben oder unten berührt
  farbe += Rnd()*4                      'Farbe ändern
  Circle (x, y), radius, farbe,,, 1, F  'Kreis ausgefüllt zeichnen
  Screenunlock 'verhindert unschönes Bildschirmflimmern

Diese beiden Anweisungen verhindern ein Bildschirmflimmern indem Screenlock das Bild "einfriert" bis es fertig gezeichnet ist und Screenunlock das neue Bild frei gibt.

Dies wird an die Stellen eingefügt die im Listing des vorhergehenden Kapitels bezeichnet wurden.
Ich erspare mir noch einmal das Listing hier komplett anzugeben.
Hier habe ich einen Download für 2 Sreensaver (incl. Quellcode) eingestellt.

FBScreensaver
Vergrößern
FBScreensaver

Viel Spaß damit ... Volta

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 20.06.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 15.08.2007 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen