Dots Screensaver v2

    • Release

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

      Dots Screensaver v2

      Name des Programmes:
      Dots Screensaver v2.scr

      Kurze Beschreibung:
      Dieses Programm ist ein kleiner Bildschirmschoner, inspiriert von [Beta] Dots.
      Entstanden ist er durch Herumprobieren mit GDI. Und da es recht schön geworden ist habe ich mir gedacht, dass es vielleicht jemand als Bildschirmschoner einrichten möchte.

      Screenshots:


      Detailierte Beschreibung:
      Um einerseits Kompatibilität, andererseits Bugfreiheit zu gewährleisten habe ich eine Version für .Net Framework 2.0, und eine für .Net Framework 4.0 kompiliert.
      Erstellt wurde das Programm für .Net Framework 4.0, und dann heruntergeschraubt auf 2.0. Die Unterschiede liegen in den .Last Funktionen der Arrays und in mehreren String.Join() Funktion, die etwas komplizierter geworden sind.
      Performancetechnisch gibt es bei Version 2 Unterschiede: Die .Net Framework 4.0 Version ist an manchen Stellen optimierter. Ob ein großer Unterschied besteht weiß ich nicht.

      Der Bildschirmschoner kann wie jeder andere Bildschirmschoner über Rechtsklick->Installieren installiert werden. Ich bin mir nicht sicher, ob Windows selbst eine Kopie der Datei macht (bei XP war das glaub ich so). Wenn nicht könnte es Probleme geben, weil Windows die Datei nicht mehr finden kann, wenn sie verschoben wird.
      Es öffnen sich die Bildschirmschonereinstellungen. In Version 1 gibt es Probleme mit der Handhabung (siehe Bugs). Darum wird ein Konsolenfenster geöffnet, sobald das Programm gestartet wird. Dieses sollte einfch wärend Einstellungen auf die Seite gezogen werden. Sobald sich ein neues öffnet sollte das alte geschlossen werden.
      Es sind folgende Einstellungen verfügbar:
      • Geschwindigkeit: Gibt an, wie schnell sich die Kreise auf dem Bildschirm bewegen. Errechnet wird die Geschwindigkeit über den angegebenen Faktor mal den Radius des Kreises. So bewegen sich größere Kreise schneller als kleinere.
      • If Rnd.Next(0, ...) = 0 Then AddDot: Das gibt die Wahrscheinlichkeit an, dass ein Kreis hinzugefügt wird.
      • Radien: Gibt die möglichen Radien an. Normalerweise steht der kleinste Radius ganz links und der größte ganz rechts (so werden größere Kreise immer über kleineren gezeichnet). Radien können nur Integer Werte annehmen.
      • Farben: Jeder Kreis hat zwei Farben, um einen Farbverlauf von hell nach dunkel zu erzeugen. Die Zahlen geben die RGB Werte an. Die Zahlen links von "|" geben die Farbe links oben an (normalerweise die hellere) und die Zahlen rechts davon die Farbe rechts unten. Jedes Farbenpaar hat eine eigene Zeile.
      Wenn eine Einstellung ungültig ist wird das entsprechende Feld rot markiert.

      Vom Programm erstellte Dateien/Ordner:
      Möglicherweise kopiert Windows die Datei irgendwo hin (so weit ich weiß war das bei XP so).
      Das Programm erstellt unter Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) einen Ordner mit dem Namen "Dot Screensaver" und darin eine Datei namens "Settings.ini".

      Keine Registry Einträge (außer die, die Windows selbst anlegt, wenn der Bildschirmschoner ausgewählt wurde).

      Verwendete Programmiersprache:
      Visual Basic .Net (IDE Visual Studio 2010 Express)

      Systemanforderungen:
      • Die Minimale Bildschirmauflösung ist nicht erwähnenswert.
      • Eine schnelle CPU/GPU ist sicherlich hilfreich beim Zeichnen vieler Kreise (besonders, wenn man zwei Bildschirme verwendet).
      • .Net Framework 2 oder höher bzw. 4 oder höher (zwei Versionen).
      • Getestet mit Windows 7 32Bit, AnyCPU


      Bugs und Changelog:
      Version 1:
      • Aufgrund meines Unwissens mit Bildschirmschonern habe ich es nicht besser hinbekommen. Immer wenn der Bildschirmschoner läuft wird ein Konsolenfenster angezeigt (hinter dem Bildschirmschoner).
      • Heller Rand links und Oben.
      • Beim Ändern der Einstellungen können Fehler auftreten.

      Version1.2:
      • Heller Rand entfernt.
      • Fehler beim Ändern der Einstellungen behoben.

      Version 2:
      • Neue Programmlogik:
        • Alles läuft über eine Form: Konsole ist nicht mehr sichtbar.
        • Einzelinstanzanwendung: Verhindert, dass Instanzen sinnlos im Hintergrund laufen.
        • Auswertung der Befehlszeilenargumente verbessert.

      • Im Programm befindet sich noch etwas Debuggingcode, der aber keine Auswirkung hat.
        Ich habe ihn nicht entfernt, da ich ihn ansonsten wieder einfügen muss, wenn ich Veränderungen machen will.
      • Die .Net Framework 4.0 Version ist etwas optimierter. Dazu zählen hauptsächlich Casts von Variablen, die nur einmal durchgeführt werden müssen.


      Download:
      Version 1.2:
      Dots Screensaver v1.2 (Framework 2.0).zip 16KB (36KB entpackt)
      Dots Screensaver v1.2 (Framework 4.0).zip 16KB (36KB entpackt)
      Version 2:
      Dots Screensaver v2 (Framework 2.0).zip 20KB (60KB entpackt)
      Dots Screensaver v2 (Framework 4.0).zip 20KB (40KB entpackt)

      Lizenz / Weitergabe:
      Das Programm darf so wie es ist beliebig weitergegeben werden, solange dafür kein Geld verlangt wird bzw. es nicht kommerziell verwendet wird.
      Es darf dekompiliert werden.

      Anregungen / Wünsche / Vorschläge:
      Wie immer kann alles verbessert werden.
      Fragen zur Programmierung beantworte ich auch gerne.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Niko Ortner“ ()

      Gefällt mir!
      Leider ruckelt es ein wenig.

      Hier noch ein Fehler, der nur auf meinem 24" Bildschirm auftritt (links). Der Rechte ist bei mir ein 19", da klappt alles.
      Gemeint ist der graue Strich am linken und oberen Rand.
      singularity.to/b7478.png

      Auflösungen: 1920x1080 + 1280 * 1024

      Edit: Außerdem öffnet sich immer die Konsole. Nicht so schön ;)
      Edit2: singularity.to/e7a12.png - erscheint, wenn ich die Einstellungen bearbeite. Ich habe alle Größen von 2 bis 64 eingefügt, in zweier Schritten. Und noch eine Farbe von 255;255;255|230;230;230

      Gruß
      To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

      At some point in time, you recognize that knowing more does not necessarily make you more happy.
      Ich muss mal sehen, was ich noch optimieren kann.

      Der Graue Strich kommt von FillRectangle(..., Me.ClientRectangle). Dann bildet sich links und oben wegen der Interpolation ein kleiner Rand.
      Hab's behoben.

      Das Problem mit der Konsole bekomme ich nicht so schnell gelöste, weil ich eine Konsolenanwendung erstellen muss, um die Sub Main verwenden zu können. Aber ich werde versuchen das Problem zu beheben.

      Die IndexOutOfRangeException kommt vermutlich vom Instanzieren der Listen.
      Sollte gefixt sein.

      Update kommt, wenn sich mehr getan hat.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Naja, weil's ein Bildschirmschoner ist.
      Alle Windows-Bildschirmschoner haben keinen Rahmen.

      Ansonsten schön, dass es Dir gefällt.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      So. Version 2 ist fertig.
      Ich habe die das Gesamte Programm mal überarbeitet.
      Da ich jetzt nicht mehr mit einer Konslenanwendung arbeite, sondern mit einer Form, wird keine Konsole mehr angezeigt.
      Weiters habe ich "Einzelinstanzanwendung" aktiviert und die Auswertung der Befehlszeilenargumente verbessert. So funtioniert das Installieren leichter.

      Falls es noch Vorschläge gibt, immer her damit ^^
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Wenn du das Anwendungsframework komplett deaktivierst, kannst du auch bei Windows Forms-Anwendungen eine Sub Main() schreiben. Dann musst du dich aber auch um die Einzelinstanzanwendung selbst kümmern, Stichwort Mutex. Bei Bildschirmschonern bekommst du ein Handle übergeben (glaube ich), das du als "Parent" an dein eigenes Fenster übergeben musst. Außerdem brauchst du nur eine GDI-Zeichenfläche - das muss keine ganze Form sein. Ein NativeWindow reicht völlig aus, denn das hat alles, was du dafür brauchst: Ein Handle. Den Grafikkontext bekommst du mit Graphics.FromHwndInternal(myNativeWin.Handle).
      Gruß
      hal2000

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()