Tipps und Tricks rund um .NET und Visual Studio

Eigene Cursorgrafiken in WPF
Kommentare

Dr. Holger Schwichtenberg (MVP) teilt in der Kolumne „.NETversum“ sein Expertenwissen rund um .NET-Tools und WPF mit. In dieser Ausgabe geht es um Eigene Cursorgrafiken in WPF.

Windows enthält mehrere vordefinierte Cursorarten (siehe Systemsteuerung). Entwickler haben die Möglichkeit, in ihren Anwendungen eigene selbsterstellte Cursorgrafiken zu verwenden. Dazu erstellt man eine Cursorgrafikdatei .cur, zum Beispiel mithilfe von Visual Studio und der Elementvorlage „Cursor“. Visual Studio bietet dafür ein Zeichenwerkzeug an (Abb. 1).

Abb. 1: Erstellen einer Cursordatei (.cur) in Visual Studio

Cursordateien zuweisen

Die Cursordatei kann man dann zur Laufzeit laden und einem WPF-Fenster zuweisen. Das Laden kann aus einer Datei erfolgen:

 

var file = File.OpenRead(@"t:\Grafiken\ITVCursor.cur");

Cursor cursor1 = new Cursor(file);

this.Cursor = cursor1;

Oder das Laden kann aus seiner eingebetteten Ressource erfolgen, die als Streamobjekt geladen wird:

 

Stream stream= Assembly.GetExecutingAssembly().GetManifestResourceStream("ITV_AppUtil.ManualTest.ITVCursor.cur");

Cursor cursor2 = new Cursor(stream);

this.Cursor = cursor2;

Multi-Image-Cursordateien für High-DPI-Displays

Windows unterstützt seit Windows 7 Multi-Image-Cursordateien, also Grafikdateien, die mehrere Cursorgrößen enthalten. Dies ist vor dem Hintergrund von hochauflösenden Displays (High DPI) möglich. Bei kleinen (96 dpi) und mittleren Auflösungen (120 dpi) verwendet Windows Cursordateien mit 32 x 32 Pixeln; in höheren Auflösungen (144 dpi) kommen Dateien mit 48 x 48 Pixeln zum Einsatz. Der Screenshot aus Visual Studio zeigt (Abb. 1), dass man dort in einer Cursordatei mehrere verschiedene Cursorgrafiken mit verschiedenen Auflösungen ablegen kann.

In WPF hat Microsoft die Unterstützung für Multi-Image-Cursordateien leider erst in .NET Framework 4.6 eingeführt. Hier sorgt ein neuer Boolean-Parameter als zweiter Parameter im Konstruktor der Cursorklasse dafür, dass WPF aus einem Multi-Image-Cursor die zu den aktuellen Anzeigeeinstellungen passende Cursorgrafikgröße lädt. Dazu ist der zweite Konstruktorparameter nach dem File- bzw. Streamobjekt auf true zu setzen:

 

Cursor cursor1 = new Cursor(file, true);

Cursor cursor2 = new Cursor(stream, true);

Der erste Screenshot (Abb. 2) zeigt das Ergebnis auf einem Monitor mit einer Auflösung von 1900 x 1020 Pixeln.

Abb. 2: Ergebnis bei 1900 x 1020 Pixel

Der zweite Screenshot (Abb. 3) zeigt das Ergebnis auf einem Monitor mit einer Auflösung von 3200 x 1800 Pixeln.

Abb. 3: Ergebnis bei 3200 x 1800 Pixel

Der 32 x 32-Pixel-Cursor ist auf dem hochauflösenden Display eindeutig zu klein (Abb. 4).

Abb. 4: 32 x 32-Pixel-Cursor ist bei High-DPI zu klein

Buchempfehlungdotnet_praxis

In den vergangenen Jahren haben Dr. Holger Schwichtenberg und Manfred Steyer im „Windows Developer“ regelmäßig Tipps und Tricks aus ihrem Alltag als Softwareentwickler, Berater und Trainer für .NET- und webbasierte Anwendungen veröffentlicht. Das vorliegende Buch ist eine aktualisierte und deutlich erweiterte Zusammenfassung dieser Tipps und Tricks. Es umfasst sowohl das .NET Framework und seine zahlreichen Teilbibliotheken als auch die beliebte JavaScript-Bibliothek AngularJS sowie die Entwicklungsumgebung Visual Studio und ergänzende Werkzeuge.

Mehr Infos: www.entwickler-press.de/Dotnet-Praxis

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -