Bildschirmschoner mit Raumschiffen

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Bildschirmschoner mit Raumschiffen

Beitrag von Christian+ »

Bildschirmschoner mit Raumschiffen
So ich habe heute mal einen einfachen Bildschirmschoner erstellt da ich testen wollte wie das funktioniert. Hat alles wunderbar geklappt weswegen ich ihn mal hier veröffentlichen will. Nur bei der Unterstützung von mehreren Bildschirmen habe ich noch etwas Probleme deshalb funktioniert das bisher nur dann richtig gut wenn alle Bildschirme die gleiche Auflösung haben ich hoffe ich bekomm das noch besser hin.
mfg Christian +

Download: http://www.file-upload.net/download-267 ... r.scr.html

Bild

Edit:
So hier mal noch das Quellcode Grundgerüst von meinem Bildschirmschoner (auch wenn es nicht das allerschönste ist) mit einem einfachen grafischen Effekt versehen. Vielleicht kann ja mal jemand den Code gebrauchen oder hat eine Idee wie ich mit guter Qualität das Ganze auf mehreren Monitoren anzeigen kann ohne das es erheblich zu langsam wird.

Code: Alles auswählen

EnableExplicit

InitSprite()

#ScreensaverName = "Test Screensaver"

Structure tagLASTINPUTINFO
  cbSize.l
  dwTime.l
EndStructure

Define PLASTINPUTINFO.tagLASTINPUTINFO
PLASTINPUTINFO\cbSize = SizeOf( tagLASTINPUTINFO )

Define i.l, preview.l, parameter$, event.i, desktops.l = 1, status.l, screenw.l, screenh.l

parameter$ = ProgramParameter(0)

Select LCase( Mid(parameter$, 2, 1) )

  Case "p"
    Define PSize.rect, window.i = Val( ProgramParameter(1) )
    GetClientRect_( window, @PSize )
    screenw = PSize\right
    screenh = PSize\bottom
    OpenWindow( 0, 0, 0, screenw, screenh, #ScreensaverName, #WS_CHILD, window )
    preview = 1

  Case "c"
    OpenWindow( 0, 0, 0, 300, 150, #ScreensaverName, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, Val( Right(parameter$, Len(parameter$)-3 ) ) )
    TextGadget( 0, 10, 20, 290, 80, "Keine Einstellungen möglich!", #PB_Text_Center ) 
    ButtonGadget( 1, 50, 110, 200, 30, "OK" ) 
    Repeat
      event = WaitWindowEvent()
      If event = #PB_Event_CloseWindow : Break : EndIf
      If event = #PB_Event_Gadget : Break : EndIf
    ForEver 
    End

  Case "s"
    desktops = ExamineDesktops()
    screenw = DesktopWidth(0)
    screenh = DesktopHeight(0)
    For i = 0 To desktops-1
      OpenWindow(i, DesktopX(i), DesktopY(i), DesktopWidth(i), DesktopHeight(i), #ScreensaverName, #PB_Window_BorderLess)
    Next

  Default
    End

EndSelect

OpenWindowedScreen( WindowID(0), 0, 0, 1920, 1080, 1, 0, 0 )

AddWindowTimer(0, 1, 150)

GetLastInputInfo_(@PLASTINPUTINFO)
status = PLASTINPUTINFO\dwTime

Define hDC.i, WndDC.i

If preview = 0 : ShowCursor_(0) : EndIf

Repeat
  
  event = WaitWindowEvent()

  Select event

    Case #PB_Event_CloseWindow
      Break

    Case #PB_Event_Timer
      If EventTimer() = 1
        StartDrawing( ScreenOutput() )
          For i = 0 To 150
            Circle( Random(1920), Random(1080), 8, RGB( Random(255), Random(255), Random(255) ) )
          Next
        StopDrawing()
        FlipBuffers()
        WndDC  = GetDC_( WindowID(0) ) 
        For i = 1 To desktops-1
          hDC = StartDrawing( WindowOutput(i) ) 
;             SetStretchBltMode_(hDC, #STRETCH_HALFTONE)
            StretchBlt_( hDC, 0, 0, DesktopWidth(i), DesktopHeight(i), WndDC, 0, 0, DesktopWidth(0), DesktopHeight(0), #SRCCOPY )
          StopDrawing()
        Next
        ReleaseDC_( WindowID(0), WndDC )
      EndIf

  EndSelect

  If preview = 0
    GetLastInputInfo_(@PLASTINPUTINFO)
    If status <> PLASTINPUTINFO\dwTime : Break : EndIf
  EndIf  
  
ForEver

If preview = 0 : ShowCursor_(1) : EndIf

End
Zuletzt geändert von Christian+ am 14.07.2010 19:01, insgesamt 1-mal geändert.
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Bildschirmschoner mit Raumschiffen

Beitrag von RSBasic »

@Christian+
Cool gemacht, nette Effekte :allright:

Könntest ja vielleicht noch Sounds hinzufügen. :wink:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: Bildschirmschoner mit Raumschiffen

Beitrag von Christian+ »

So habe den Download Link erneuert nun kann man in den Optionen Sound Aktivieren. Wer eine eigene Hintergrundmusik will muss einfach eine Datei mit dem Namen ScreensaverMusik.ogg ins gleiche Verzeichnis wie den Bildschirmschoner legen dann wird diese statt dem Standard genutzt.
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Programador
Beiträge: 3
Registriert: 14.07.2010 19:03

Re: Bildschirmschoner mit Raumschiffen

Beitrag von Programador »

Genialer Bildschirmschoner - Gefällt mir! Die Flugzeuge fliegen zwar immer in eine Richtung und drehen sich nicht, doch für eine kurze Arbeit ist das echt top! :)
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: Bildschirmschoner mit Raumschiffen

Beitrag von Christian+ »

Programador hat geschrieben:Die Flugzeuge fliegen zwar immer in eine Richtung und drehen sich nicht, doch für eine kurze Arbeit ist das echt top! :)
Die fliegen doch immer ein Stück drehen sich dann und fliegen wieder ein Stück und so weiter (falls sie nicht vorher Explodieren). Was meinst du mit fliegen immer in eine Richtung und drehen sich nicht?
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Antworten