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 :mrgreen:

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 :cry: )

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 :coderselixir:

Re: Matrix-Bildschirmschoner

Verfasst: 29.01.2012 02:16
von STARGÅTE
Jap funktioniert nun :allright:

Bild
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.