ScreensaverLib v1

    • Release

    Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von haiyyu.

      ScreensaverLib v1

      Name der Bibliothek:
      ScreensaverLib.dll

      Kurze Beschreibung:
      Diese Klassenbibliothek ist dazu da, einfach Bildschirmschoner erstellen zu können.
      Das verwendende Projekt muss nur ein Einstellungsfenster, ein Fenster, auf das gezeichnet wird und einen Manager, der für das Zeichnen und für die Fehlerbehandlung zuständig ist, zur Verfügung stellen.
      Befehlszeilenargumente, Zeichnen auf das Vorschaufenster etc. wird im Hintergrund erledigt.
      Es müssen ein paar Interfaces implementiert werden.

      Entstanden aus dem Urwald an Informationen, durch den man sich wühlen muss, wenn man einen Bildschirmschoner machen will und der Erfahrung, die ich beim Dots Screensaver gesammelt habe.

      Klassendiagramm:
      Hier werden nur die öffentlich zugänglichen Member und Typen aufgelistet.
      Intern befinden sich noch weitere Klassen, die zur Übersichtlichkeit als "Friend" deklariert sind.
      Alle öffentlichen Typen sind Public und alle öffentlichen Member sind Public Shared.

      Stammnamespace: ScreensaverLib

      Spoiler anzeigen

      Enum DrawTo As Integer
      • None = 0
      • Window = 1
      • Handle = 2

      Class Exceptions
      • Enum CommandLineErrorType As Integer
        • Unknown = 1
        • TooFewArguments = 2
        • HWndNotParseable = 3

      • Enum HWndErrorType As Integer
        • OnCreateGraphicsFromHWnd = 1
        • OnCreateBitmap = 2
        • OnDrawToGraphics = 3

      • Enum PaintErrorType As Integer
        • MustGraphics = 1
        • MustHWnd = 2

      • Class ManagerIsNothingException (Inherits Exception)
      • Class DisplayWindowIsNothingException (Inherits Exception)
      • Class SettingsWindowIsNothingException (Inherits Exception)

      Interface IScreensaverManager
      • Sub OnCommandLineError(ByVal Type As Exceptions.CommandLineErrorType, ByVal Message As String)
      • Sub OnHWndError(ByVal Type As Exceptions.HWndErrorType, ByVal Message As String)
      • Sub OnPaintError(ByVal Type As Exceptions.PaintErrorType, ByVal Message As String)
      • Sub DrawModeChanged()
      • Sub DrawToGraphics(ByVal g As Graphics, ByVal Bounds As RectangleF)
      • Sub ExitApplication()
      • Function GetNewSettingsWindow() As IScreensaverSettingsWindow

      Interface IScreensaverDisplayWindow
      • Function GetBounds() As Rectangle


      Interface IScreensaverSettingsWindow
      • Sub DoDisposing()
      • Sub ShowSettings(ByVal ParentWindow As IWin32Window)


      Class UserInterface
      • Sub SetDummyManagerPath(ByVal Path As String)
      • Sub Initialize(ByVal NewManager As IScreensaverManager, ByVal NewDisplayWindow As IScreensaverDisplayWindow)
      • Sub SetCommandLineArgs(ByVal Args As IEnumerable(Of String))
      • Sub ExitAction()
      • Sub SettingsWindowClosed(Optional ByVal sender As Object = Nothing, Optional ByVal e As EventArgs = Nothing)
      • ReadOnly Property DrawMode As DrawTo
      • ReadOnly Property HWndBounds As RectangleF
      • Sub PaintToHWnd()
      • Sub PaintToGraphics(ByVal g As Graphics)



      Hier die vollständige XML Dokumentation. Für die, die es genau wollen ^^
      ScreensaverLib.xml (12KB)

      Beispielprojekt und Erklärungen:
      Da die Verwendung wohl etwas unklar ist hier die Anleitung zu einem Beispiel-Windows-Forms-Projekt (geschrieben für .Net Framework 4.0).
      Hier wird IScreensaverManager und IScreensaverDisplayForm gleichzeitig von Form_Main implementiert. Das liegt daran, dass Form_Main das Startformular ist und es so einfacher zu handhaben ist. Man könnte aber beides getrennt halten.
      Beispielprojekt.txt (20KB)
      Oder das ganze Projekt:
      Beispielprojekt.zip (200KB)

      Die DummyApplication:
      Die Klasse UserInterface bietet eine Methode namens SetDummyApplicationPath(). Die DummyApplication dient zum Debuggen.
      Sie dient nur dazu die Befehlszeilenargumente, mit denen sie aufgerufen wird anzuzeigen (sie sollte also eine Einzelinstanzanwendung sein).
      Falls es für jemanden nützlich ist: Hier eine Anleitung für eine DummyApplication:
      DummyApplication.txt (4KB)

      Beim Aufrufen von UserInterface.SetDummyApplicationPath() muss der Pfad zur exe angegeben werden.

      Von der Bibliothek erstellte Dateien/Ordner/Registryeinträge:
      Keine.

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

      Systemanforderungen:
      • .Net Framework 2.0 oder höher bzw. 4.0 oder höher (zwei Versionen).
      • Da viel mit GDI gezeichnet wird kann eine schnelle CPU nicht schaden.

      Bugs und Changelog:
      Version 1:
      • Noch keine.

      Download:
      ScreensaverLib v1 (Framework 2.0).zip 12KB (24KB entpackt)
      ScreensaverLib v1 (Framework 4.0).zip 12KB (24KB entpackt)

      Lizenz / Weitergabe:
      Die Klassenbibliothek darf so wie sie ist beliebig weitergegeben werden, solange dafür kein Geld verlangt wird.
      Sie darf nicht kommerziell verwendet werden.
      Dekompilieren verboten.
      Einbinden erlaubt (Erwähnung wäre schön).

      Anregungen, Wünsche und Vorschläge:
      Die Bibliothek kann ein paar Erweiterungen gut gebrauchen. Ganz besonders möchte ich die Klasse "UserInterface" so weit wie möglich minimieren. Falls jemand Ideen hat wäre ich sehr dankbar.
      Auch sonstige Anregungen nehme ich gerne entgegen.
      Fragen zur Programmierung beantworte ich gerne (das Wissen soll ja für alle nützlich sein).
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

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