Matrix-Bildschirmschoner

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Matrix-Bildschirmschoner

Beitrag 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)?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Little Progger
Beiträge: 43
Registriert: 21.04.2010 10:05
Computerausstattung: 2,8 gHz Dual core
Geforce 9800GT Green Edition
500GB SATA
Wohnort: Daheim
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag 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: )
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Little Progger
Beiträge: 43
Registriert: 21.04.2010 10:05
Computerausstattung: 2,8 gHz Dual core
Geforce 9800GT Green Edition
500GB SATA
Wohnort: Daheim
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag 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:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag von STARGÅTE »

Jap funktioniert nun :allright:

Bild
25% verkleinerter Screenshot von 2560x1024

Nur halt wie vermutet etwas langsammer ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Little Progger
Beiträge: 43
Registriert: 21.04.2010 10:05
Computerausstattung: 2,8 gHz Dual core
Geforce 9800GT Green Edition
500GB SATA
Wohnort: Daheim
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag von Little Progger »

JUHU!!
Danke STARGÅTE fürs Script!!!
Jetzt kann ich mit ruhigem Gewissen schlafen gehen!! <)
Gute Nacht!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Matrix-Bildschirmschoner

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Derren
Beiträge: 557
Registriert: 23.07.2011 02:08

Re: Matrix-Bildschirmschoner

Beitrag 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.
Signatur und so
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Matrix-Bildschirmschoner

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten