Seite 2 von 3
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 01:35
von ts-soft
Little Progger hat geschrieben:Naja, jetzt müsste es gehen... (ich kanns leider nich vorher testen, weil ich keine zwei Bildschirme hab...)
Nein, funktioniert nicht, Absturz und Maus und Tastatur waren auf dem sekundären Monitor gefangen. So kann das nicht bleiben, böse Falle
Hast Du bedacht, das beide Monitore unterschiedliche Auflösungen haben könnten (bzw. bei mir haben)?
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 01:38
von STARGÅTE
Ne, jetzt bekomme ich einen Absturz.
da PB mehrere Screens nicht zulässt, müsstest du einen großen öffnen (über beide Desktops) was u.u. zu Lags führt.
Hier ein Beispiel:
Code: Alles auswählen
Enumeration
#Window
#MenuItem
EndEnumeration
Define Desktop.i
Define Desktops.i = ExamineDesktops()
Define Width.i, Height.i
For Desktop = 0 To Desktops-1
If DesktopX(Desktop)+DesktopWidth(Desktop) > Width
Width = DesktopX(Desktop)+DesktopWidth(Desktop)
EndIf
If DesktopY(Desktop)+DesktopHeight(Desktop) > Height
Height = DesktopY(Desktop)+DesktopHeight(Desktop)
EndIf
Next
InitSprite()
OpenWindow(#Window, 0, 0, Width, Height, "Example", #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
AddKeyboardShortcut(#Window, #PB_Shortcut_Escape, #MenuItem)
Repeat
Repeat
Select WaitWindowEvent(10)
Case #PB_Event_Menu
Select EventMenu()
Case #MenuItem
Break 2
EndSelect
Case #Null
Break
EndSelect
ForEver
StartDrawing(ScreenOutput())
Box(Random(WindowWidth(#Window)), Random(WindowWidth(#Window)), Random(32), Random(32), Random($FFFFFF))
StopDrawing()
FlipBuffers()
ForEver
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 01:42
von Little Progger
hab jetzt erstmal den alten Link wieder rein gemacht.
Also ich habs so gemacht:
Code: Alles auswählen
DeskX=DesktopWidth(0)+DesktopWidth(1)
DeskY=DesktopHeight(0)
OpenScreen(DescX,DescY,32,"Matrix Screen Saver")
Jetzt weiß ich nur nicht, ob das überhaupt so geht... (also anscheinend ja nicht

)
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 01:47
von STARGÅTE
OpenScreen funktioniert nicht, weil OpenScreen nur auf einem Desktop "zugelassen" wird.
Das heißt du musst wie in meinem Beispiel (oben) zu einem Window + WindowedScreen wechseln.
Außerdem müssen es nicht nur 2 Desktops sein, und diese müssen auch nicht genau nebeneinander stehen, sonden können auch Versetzt sein, übereinander usw. daher müsstest du es ähnlich wie ich so machen, dass du auch die Koordinaten der Desktops berücksichtigst.
(ich gebe zu, ist blöd zu programmieren, wenn man selber nichts sieht)
Aber vielleicht hast du ja einen Laptop an den du einene Bildschirm anschließen kannst, dann kannst du dort auch deinene Desktop erweitern.
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 02:05
von Little Progger
So... habs jetzt nochmal geändert...
http://dl.dropbox.com/u/59364785/Matrix ... chirme.zip
Falls es jetzt nicht klappt, geh ich schlafen... sonst wirds nur noch schlimmer

Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 02:16
von STARGÅTE
Jap funktioniert nun
25% verkleinerter Screenshot von 2560x1024
Nur halt wie vermutet etwas langsammer ...
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 02:21
von Little Progger
JUHU!!
Danke STARGÅTE fürs Script!!!
Jetzt kann ich mit ruhigem Gewissen schlafen gehen!!
Gute Nacht!
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 02:26
von ts-soft
Funktioniert aber nur auf beiden Monitoren, wenn der primäre Monitor sich links befindet,
nicht physikalisch links, sondern im Dialog links, ansonsten hat man nur auf einem
Monitor den Bildschirmschoner. Stürzt aber nicht ab, kannst Du also erst mal so lassen.
Gruß
Thomas
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 03:53
von Derren
Wäre das nicht ein Fall für das CanvasGadget?
Jaja. Hardwareunterstützung, aber die braucht's ja bei so einfachen Sachen nicht.
Alle Desktops auflisten, rahmenlose Fenster an der angebenen Position mit den angegeben Maßen öffnen und drauf los pinseln.
Re: Matrix-Bildschirmschoner
Verfasst: 29.01.2012 09:24
von STARGÅTE
@ts-soft, Little Progger
Stimmt habe in meinem Script vergessen, zu prüfen, ob ein Desktop eine Minus-Koordinate hat.
Das Stück oben muss also so erweitert werden:
Code: Alles auswählen
Enumeration
#Window
#MenuItem
EndEnumeration
Define Desktop.i
Define Desktops.i = ExamineDesktops()
Define X1.i, Y1.i, X2.i, Y2.i
For Desktop = 0 To Desktops-1
If DesktopX(Desktop) < X
X1 = DesktopX(Desktop)
EndIf
If DesktopY(Desktop) < Y
Y1 = DesktopY(Desktop)
EndIf
If DesktopX(Desktop)+DesktopWidth(Desktop) > X2
X2 = DesktopX(Desktop)+DesktopWidth(Desktop)
EndIf
If DesktopY(Desktop)+DesktopHeight(Desktop) > Y2
Y2 = DesktopY(Desktop)+DesktopHeight(Desktop)
EndIf
Next
InitSprite()
OpenWindow(#Window, X1, Y1, X2-X1, Y2-Y1, "Example", #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
; [...]
@Derren:
Stimmt, die Hardwareunterstützung funktioniert eh nicht, da es bei erweitertem Desktop und übergreifenden Screen stark ruckelt. Müsste man mal testen.