Icons und Bilder in Wisej.NET
Wisej.NET bietet mehr als einen Weg, ein Bild auf ein Steuerelement zu bringen, und alle funktionieren. Genau deshalb verwendet eine Anwendung irgendwann alle Wege durcheinander, bis niemand mehr sagen kann, woher ein bestimmtes Icon stammt oder warum es nach dem Deployment verschwunden ist. Dieser Einsteigerkurs schafft Ordnung: Für jedes Bild benennen Sie zuerst den Mechanismus und weisen es erst dann zu. Sieben Module beginnen bei den zwei Pipelines – dem Objekt System.Drawing.Image, das der Server als PNG an den Browser sendet, und dem String ImageSource, den der Client auflöst – sowie beim gemeinsamen Vertrag IImage und der geteilten ImageList. Danach geht es um Bitmap- und SVG-Formate mit der PictureBox, ihren Size Modes und LoadAsync; um Theme-Bilder, URLs, das Farbsuffix für SVGs und den Image Selector im Designer; um die offiziellen Icon-Packs aus NuGet; um eingebettete Ressourcen, die über resource.wx adressiert werden; um den Bau eines eigenen, wiederverwendbaren Icon-Packs; und zum Schluss um Icon-Fonts, HTML-Inhalte und die Icon-Policy für den Produktivbetrieb – alles aufgebaut im Projekt IconDesk. Der Kurs richtet sich an Entwicklerinnen und Entwickler, die die Grundlagen von C# beherrschen und bereits etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben.
Setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein.
- Niveau: Beginner
- Dauer: 9 Stunden
- Module: 7
Lehrplan
Modul 1: Das Bildmodell von Wisej.NET: Image, ImageSource und ImageList
Modul 1 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zum Bildmodell an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Die zwei Bild-Pipelines: eine Eigenschaft Image, die ein System.Drawing.Image enthält, das der Server als PNG an den Browser sendet, gegenüber einem String ImageSource oder IconSource, den der Client als URL, als Theme-Namen, als resource.wx-Pfad oder als Element eines Icon-Packs auflöst – dazu der gemeinsame Vertrag IImage und die ImageList, über die viele Steuerelemente einen gemeinsamen, nach Schlüsseln adressierten Satz von Bildern nutzen. Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionImage-Objekt oder Bild-String: das Richtige wählen · 14 Min.
Image-Objekt oder Bild-String: das Richtige wählen – ein geführter Video-Walkthrough zu Modul 1, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Icons und Bilder in Wisej.NET, Modul eins. Wisej.NET bietet mehrere Wege, ein Bild auf ein Control zu bringen. Die erste Entscheidung in diesem Kurs lautet deshalb immer: Welcher Mechanismus besitzt das Bild?
Die Eigenschaft Image hält ein System.Drawing.Image. Der Server behält es im Speicher und sendet es als PNG an den Browser. ImageSource hält nur eine Zeichenfolge, auf dem Server wird also nichts dekodiert. Beide füllen denselben visuellen Slot am Control. Genau deshalb muss die Wahl bewusst fallen.
Diese Zeichenfolge kann eine relative URL sein, eine absolute URL, ein benanntes Theme-Bild oder ein resource.wx-Pfad. Aufgelöst wird sie vom Client. Bildfähige Controls teilen sich einen Vertrag über IImage. Ein Button, ein Label und eine Grid-Zelle bieten deshalb dieselbe Familie von Bild-Eigenschaften.
In IconDesk bekommt der Open-Button ein Bildobjekt, das der Server aus einer Datei liest. Der Save-Button bekommt einen Theme-Bildnamen auf ImageSource. Print und Delete teilen sich eine ImageList und wählen ihre Grafik über einen Key. Die Liste entscheidet also, was diese beiden Buttons zeichnen.
Eine ImageList ist Indirektion, nicht Speicher. Ein Key trägt Bedeutung und übersteht ein Umsortieren. Ein Index ist nur eine Position und zeigt nach einer Änderung still auf eine andere Grafik. Tauschen Sie das Bild hinter einem Key aus, folgt jedes Control, das diesen Key verwendet, ganz ohne weiteren Code.
Das Diagnose-Label fragt jeden Button über IImage, welche Bild-Eigenschaft wirklich gefüllt ist. Diese Frage findet einen typischen Fehler: Wird eine Bildquelle nach einem Image-Key zugewiesen, übernimmt sie den Slot. Der Key bleibt gesetzt, und das Control zeichnet die Zeichenfolge. Das Control auszulesen schlägt jedes Raten.
Beim Ausführen der Seite kommen vier Icons auf vier verschiedenen Wegen an, und alle sehen gleich richtig aus. Nur beim Open-Button hat der Server ein Bild dekodiert. Die anderen drei hat der Browser aufgelöst. Das Label benennt den Mechanismus hinter jedem Icon, der Unterschied ist also sichtbar statt vermutet.
Tauschen Sie die Grafik hinter dem Delete-Key aus, ändert sich nur dieser Button, denn das Control verweist auf den Key und nicht auf das Bild. Weisen Sie demselben Button danach eine Bildquelle zu, ändert sich das Gezeichnete, während der Key gesetzt bleibt und ignoriert wird.
Lab eins: Bauen Sie die IconDesk-Befehlsleiste mit allen drei Mechanismen, ergänzen Sie das Diagnose-Label, das jeden Button über IImage ausliest, und halten Sie fest, was der Key-Tausch und die doppelte Zuweisung tatsächlich bewirkt haben.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 1 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Vier Buttons, vier Bildmechanismen · 45 Min.
Ziel: Erstellen Sie das Projekt IconDesk und geben Sie ihm ein Befehls-Panel mit den Buttons Open, Save, Print und Delete, von denen jeder sein Icon über einen anderen Mechanismus erhält. Laden Sie btnOpen aus einem serverseitigen System.Drawing.Image, weisen Sie btnSave.ImageSource ein benanntes Theme-Bild zu und lassen Sie btnPrint und btnDelete über ImageKey auf eine gemeinsame ImageList zeigen. Ergänzen Sie ein Diagnose-Label, das jeden Button über IImage untersucht und meldet, welcher Mechanismus tatsächlich im Spiel ist; tauschen Sie dann das unter einem Schlüssel der ImageList gespeicherte Bild aus und prüfen Sie, dass jedes Steuerelement, das diesen Schlüssel verwendet, der Änderung folgt. Ergebnisse: IconDesk-Befehls-Panel mit den Buttons Open, Save, Print und Delete; btnOpen mit einem auf dem Server geladenen System.Drawing.Image und btnSave mit einem benannten Theme-Bild auf ImageSource; btnPrint und btnDelete, die sich über ImageKey statt ImageIndex eine ImageList teilen; Diagnose-Label, das jeden Button über IImage liest und den Mechanismus hinter seinem Icon benennt; Lab-Notiz, die festhält, was beim Austausch eines ImageList-Schlüssels geschah und was, als zwei Bildeigenschaften auf demselben Button gesetzt wurden.
Modul 2: Bitmaps, SVGs und PictureBox: Formate, Größenanpassung und Laden
Modul 2 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zu den PictureBox-Formaten und Size Modes an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Zwei Formatlisten, weil es zwei Pipelines gibt: Bitmap, Metafile, Icon, JPEG, GIF und PNG über System.Drawing und PictureBox.Image, dagegen jpg, jpeg, png, gif, svg und bmp, die resource.wx und Theme-Bilder als String akzeptieren – dazu die Size Modes der PictureBox und die Einstiegspunkte Load (synchron) und LoadAsync (asynchron). Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionEin Bild, sechs Size Modes, zwei Pipelines · 14 Min.
Ein Bild, sechs Size Modes, zwei Pipelines – ein geführter Video-Walkthrough zu Modul 2, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Modul zwei. Die ImageLab-Seite in IconDesk stellt ein Bildobjekt und eine Bildquellen-Zeichenfolge auf PictureBox-Controls nebeneinander. So wird der Unterschied zwischen den beiden Pipelines zu etwas, das Sie sehen können.
Die Frage, welche Formate Wisej.NET unterstützt, hat keine einzige Antwort, und wer sie so behandelt, baut echte Fehler ein. Ein verzerrtes Logo, eine Seite, die auf ein entferntes Foto wartet, und eine Icon-Datei, die nicht lädt: Alle drei entstehen, wenn man zwei Formatlisten zu einer zusammenzieht.
Halten Sie die Listen getrennt. Bitmap, Metafile, Icon, JPEG, GIF und PNG laufen über System.Drawing und die Eigenschaft Image. Der Ressourcen-Handler und Theme-Bilder nehmen JPEG, PNG, GIF, SVG und Bitmap als Zeichenfolge. SVG gehört zur Zeichenfolgen-Pipeline und ist kein System.Drawing-Format.
Sechs Größenmodi beschreiben, was passiert, wenn Bild und Box nicht zusammenpassen. Normal beschneidet, AutoSize passt die Box an das Bild an, CenterImage zentriert, StretchImage verzerrt, Zoom passt das ganze Bild hinein, und Cover füllt die Box und schneidet den Überstand ab.
Vier Controls teilen sich eine Quell-Zeichenfolge und unterscheiden sich nur im Größenmodus. Das trennt die Größenentscheidung von der Ladeentscheidung. Die alte Icon-Datei wandert von der Bildquellen-Zeichenfolge auf die Eigenschaft Image, denn Icon und Metafile gehören zur System.Drawing-Pipeline.
LoadAsync holt das Partnerfoto, ohne die Seite anzuhalten, bis es da ist. Ein Vektor-Icon, über eine Ressourcen-Zeichenfolge adressiert, bedient vier Größen aus demselben Asset. Ein Report-Handler gibt danach für jede PictureBox aus, ob das Bild von Image oder von ImageSource kam.
Im Betrieb wird dasselbe Asset von Normal beschnitten, von Zoom eingepasst, von Cover zugeschnitten und von StretchImage plattgedrückt. Das entfernte Foto ist noch unterwegs, und die Seite bleibt bedienbar, während es lädt. Genau darum geht es beim asynchronen Laden.
Die Vektorreihe bleibt bei sechzehn, vierundzwanzig, zweiunddreißig und achtundvierzig Pixeln scharf. Die kleine Bitmap ist schon bei zweiunddreißig weich, denn der Browser vergrößert Pixel, die es nie gab. Der Report benennt dann die Pipeline hinter jedem Control, damit niemand raten muss.
Lab zwei: Bauen Sie ImageLab mit vier Größenmodi an einem Raster-Asset, einem entfernten Foto über LoadAsync, einem Vektor-Icon in vier Größen, dem Report-Handler und der Formatnotiz.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 2 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Size Modes, LoadAsync und ein scharfes SVG · 45 Min.
Ziel: Bauen Sie in IconDesk eine Seite ImageLab, die die zwei Pipelines nebeneinander sichtbar macht. Zeigen Sie ein Rasterbild viermal mit SizeMode auf Normal, Zoom, Cover und StretchImage, damit die Unterschiede bei Zuschnitt und Verzerrung offensichtlich werden, ergänzen Sie eine PictureBox, die ein entferntes JPEG mit LoadAsync holt und die Seite währenddessen bedienbar hält, und platzieren Sie ein über ImageSource zugewiesenes SVG in 16, 24, 32 und 48 Pixeln, um zu belegen, dass es scharf bleibt. Schließen Sie mit einem Handler ab, der für jede PictureBox der Seite meldet, ob ihr Bild aus Image oder aus ImageSource stammt. Ergebnisse: Seite ImageLab, die ein Rasterbild in den Size Modes Normal, Zoom, Cover und StretchImage zeigt; PictureBox, die ein entferntes JPEG mit LoadAsync holt, ohne die Seite zu blockieren; ein über ImageSource zugewiesenes SVG, gerendert in 16, 24, 32 und 48 Pixeln; Report-Handler, der pro PictureBox benennt, ob Image oder ImageSource das Bild geliefert hat; Format-Notiz, die auflistet, welche Lab-Assets über System.Drawing laufen und welche Ressourcen-Strings bleiben.
Modul 3: Theme-Bilder, URLs, SVG-Farbe und der Image Selector im Designer
Modul 3 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zu den Theme-Bildern an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Bildquellen, die keine Dateien neben der Seite sind: benannte Theme-Bilder aus dem Theme-Cache des Clients, relative und absolute URLs, base64-Daten im Theme, der Image Selector in Visual Studio, der den Quell-String für Sie schreibt, und das Suffix ?color=, das ein geeignetes einfarbiges SVG mit dem Namen einer Theme-Farbe umfärbt. Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionTheme-Namen, URLs und ein umgefärbtes SVG · 14 Min.
Theme-Namen, URLs und ein umgefärbtes SVG – ein geführter Video-Walkthrough zu Modul 3, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Icons und Bilder, Modul drei. Das Bild auf einem Control ist oft keine Datei neben der Seite, sondern eine Quell-Zeichenfolge. Der IconGallery-Bildschirm füllt fünf Slots auf fünf verschiedene Arten.
Modul zwei hat IconDesk mit einem getippten Pfad für jedes Aussehen zurückgelassen. Das trägt, bis sich das Aussehen ändern muss. Ein Theme kann das Bild als relative URL, als absolute URL, als eingebettete Daten oder als benanntes Bild liefern. Nur das benannte Bild fügt eine Schicht Indirektion hinzu.
Weisen Sie ImageSource einen Theme-Bildnamen zu, wird keine Datei geöffnet und kein System.Drawing.Image erzeugt. Der Name ist ein Key, den der Client aus dem bereits geladenen Theme auflöst. Deshalb kann ein anderes Theme eine andere Grafik liefern, ohne dass sich Ihr C#-Code ändert.
Der Image Selector im Designer durchsucht Projektbilder, Theme-Bilder und jedes Icon-Pack, das das Projekt referenziert, jeweils mit Vorschau. Für einfarbige Icons zeigt er auch die Farbe vorab. Eine Umfärbung entscheiden Sie also durch Hinsehen statt durch Neubauen und Neuladen.
Lesen Sie, was der Picker geschrieben hat. Designer.cs hält eine Ressourcen-Zeichenfolge, die auf die Assembly mit der Grafik zurückverweist, nie eine Kopie der Datei selbst. Dieselbe Zeichenfolge lässt sich zur Laufzeit berechnen. Das zählt, wenn das Icon vom Zustand abhängt und nicht vom Layout.
Ein Farbsuffix an der Quell-Zeichenfolge färbt ein geeignetes einfarbiges Vektor-Icon um. Ein wörtlicher Farbwert funktioniert, ein Theme-Farbname ist besser. Das Icon folgt dann dem Theme, statt einen Wert festzunageln, dem eine spätere Palette still widerspricht.
Im Betrieb füllt IconGallery fünf Slots über einen Theme-Key, eine relative URL, eine absolute URL, eine Pack-Ressource und ein umgefärbtes Vektor-Icon. Sie wirken gleich gesetzt, doch nur die absolute URL hängt an einem Host, den Sie nicht kontrollieren. Das sollten Sie vor dem Deployment wissen.
Jetzt wechseln Sie das Theme. Der Theme-Key löst sich auf neue Grafik auf, und die im Suffix genannte Theme-Farbe wandert mit. Die drei Quellen, die exakte Grafik benannt haben, bleiben identisch. Das ist der praktische Unterschied zwischen einer semantischen und einer wörtlichen Referenz.
Lab drei: Füllen Sie IconGallery über den Image Selector, färben Sie ein einfarbiges Icon mit einem Theme-Farbnamen um, lesen Sie die Zeichenfolgen in Designer.cs und schreiben Sie die Notiz zum Theme-Wechsel.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 3 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Theme-Bilder, Image Selector und Umfärben · 45 Min.
Ziel: Füllen Sie in IconDesk eine Seite IconGallery, indem Sie den Image Selector des Designers verwenden, statt Quell-Strings von Hand zu tippen. Weisen Sie fünf Steuerelementen Bilder zu: ein benanntes Theme-Bild, ein Projekt-SVG über eine relative URL, eine absolute URL und mindestens zwei Assets aus einem Icon-Pack, falls eines installiert ist. Färben Sie ein einfarbiges SVG mit dem Suffix ?color= und dem Namen einer Theme-Farbe um, öffnen Sie die erzeugte Designer.cs und lesen Sie die Bildquellen-Strings, die der Selector geschrieben hat; schalten Sie die Anwendung dann zwischen zwei Wisej-Themes um und halten Sie fest, welche Assets sich geändert haben und welche exakt gleich geblieben sind. Ergebnisse: Seite IconGallery mit fünf Steuerelementen, deren Bilder über den Image Selector des Designers zugewiesen wurden; darunter ein benanntes Theme-Bild, ein relatives Projekt-SVG, eine absolute URL und mindestens zwei Icon-Pack-Assets; einfarbiges SVG, das über das Suffix ?color= mit dem Namen einer Theme-Farbe umgefärbt wurde; Auszug aus Designer.cs mit den Bildquellen-Strings, die der Selector erzeugt hat; Notiz zum Theme-Wechsel, die festhält, welche Assets dem Theme gefolgt sind und welche unverändert blieben.
Modul 4: Wisej.NET-Icon-Packs und NuGet
Modul 4 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zu den Icon-Packs an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Was ein Icon-Pack wirklich ist: eine .NET-Assembly, die Hunderte SVG-Dateien als eingebettete Ressourcen trägt, die einzeln über resource.wx adressiert und vom Browser Icon für Icon zwischengespeichert werden, installiert aus den offiziellen Wisej-4-NuGet-Paketen, durchsucht im Bild-Explorer von Visual Studio und aus C# über den Icon-Katalog des Packs referenziert. Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionEin Pack installieren, ein Icon wählen, die erzeugte URL lesen · 14 Min.
Ein Pack installieren, ein Icon wählen, die erzeugte URL lesen – ein geführter Video-Walkthrough zu Modul 4, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Modul vier. IconDesk braucht heute fünf Icons und in diesem Quartal vielleicht vierzig weitere. Sammelt man sie Datei für Datei, bekommt man mehrere Strichstärken, keinen gemeinsamen Stil und keinen Nachweis, woher etwas stammt.
Ein Icon-Pack ist eine gewöhnliche .NET-Assembly, deren Grafik als eingebettete Ressourcen liegt. Eine Datei im Ausgabeordner kann Hunderte oder Tausende Icons tragen, und jedes bleibt über den Ressourcen-Handler einzeln adressierbar. Nichts wird zu einem einzigen unbrauchbaren Block gebündelt.
Die beiden Mechanismen liefern unterschiedlich aus, und das entscheidet, wohin jeder gehört. Pack-Icons werden abgeholt: eine Anfrage bei der ersten Verwendung, danach der Browser-Cache. Theme-Bilder werden mitgeschickt und gemeinsam mit dem Theme vorgeladen. Deshalb gehören sehr große Kataloge in ein Pack.
Installieren Sie die Packs aus den offiziellen Wisej-4-Paketen und halten Sie deren Hauptversionen im Einklang mit dem Framework. Bauen Sie danach das Projekt, bevor Sie suchen: Der Image Explorer listet nur die Packs, gegen die das Projekt tatsächlich kompiliert wurde.
Wählen Sie ein Icon und lesen Sie, was der Designer erzeugt hat: den Ressourcen-Handler, die Pack-Assembly, die Icon-Datei und optional das Farbsuffix. Jeder Teil dieser Zeichenfolge wird zur Laufzeit geprüft. Deshalb löst sich ein aus dem Gedächtnis getippter Dateiname auf gar nichts auf.
Nutzen Sie in C# den Icon-Katalog des Packs statt einer getippten Zeichenfolge. Eine Umbenennung wird so zum Compilerfehler statt zu einem leeren Control. Der genaue Namespace hängt vom Pack ab. Setzen Sie eine Bild-Eigenschaft pro Control, und geben Sie jedem bedeutungstragenden Icon eine Beschriftung.
Die IconCompare-Seite zeigt dieselben fünf Konzepte, gezeichnet von zwei Familien. Der stilistische Unterschied wird so deutlich, wie es eine Katalogseite nie schafft. Zwei einfarbige Icons nehmen das Farbsuffix mit einem Theme-Farbnamen an, mehrfarbige Grafik ignoriert es einfach.
Das Netzwerkpanel liefert den Beleg: eine Anfrage pro Icon beim ersten Laden, Cache-Treffer beim Neuladen. Eine so gestützte Empfehlung ist belastbar. Sie zeigt außerdem, warum der Verweis auf ein großes Pack den Lernenden keinen großen Download kostet.
Lab vier: Referenzieren Sie zwei Wisej-4-Packs, bauen Sie daraus eine IconCompare-Seite, wählen Sie mindestens fünf Icons im Explorer, färben Sie zwei um und benennen Sie die primäre Icon-Familie des Projekts.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 4 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Zwei Icon-Packs im direkten Vergleich · 45 Min.
Ziel: Fügen Sie IconDesk zwei offizielle Wisej-4-Icon-Pack-NuGet-Pakete hinzu und bauen Sie eine Seite IconCompare, die dieselben fünf Konzepte – Save, Delete, Search, User und Settings – aus beiden Familien zeigt, sodass der optische Unterschied nicht zu übersehen ist. Wählen Sie mindestens fünf der Icons über den Bild-Explorer von Visual Studio statt den Pfad zu tippen, weisen Sie die übrigen in C# aus dem Katalog des Packs zu, färben Sie zwei davon mit dem Suffix ?color= um und beobachten Sie im Netzwerk-Panel, wie die Icon-Dateien Anfrage für Anfrage eintreffen und danach aus dem Browser-Cache kommen. Schließen Sie mit einer kurzen Empfehlung ab, die die primäre Icon-Familie für das Projekt benennt. Ergebnisse: zwei offizielle Wisej-4-Icon-Pack-NuGet-Pakete, die IconDesk referenziert; Seite IconCompare, die Save, Delete, Search, User und Settings aus beiden Packs zeigt; mindestens fünf Icons, die über den Bild-Explorer von Visual Studio ausgewählt und nicht von Hand getippt wurden; zwei mit dem Farbsuffix umgefärbte Icons und eine Notiz dazu, welche Grafik das Umfärben angenommen hat; ein Absatz Empfehlung, der die primäre Icon-Familie des Projekts benennt, mit dem Beleg aus dem Browser-Cache.
Modul 5: Eingebettete Ressourcen und resource.wx
Modul 5 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zu den eingebetteten Ressourcen an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Bilder in der Assembly ausliefern: Build Action auf Embedded Resource, der resource.wx-Handler mit und ohne Assembly-Qualifizierer, die Erweiterungen css, js, html, jpg, jpeg, png, gif, svg und bmp, die er ausliefert, und die ausgelieferte Datei, die eine eingebettete Ressource ohne Neubau überschreiben kann. Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionEinmal einbetten, mit resource.wx adressieren · 14 Min.
Einmal einbetten, mit resource.wx adressieren – ein geführter Video-Walkthrough zu Modul 5, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Icons und Bilder in Wisej.NET, Modul fünf. Fünf IconDesk-Assets sind keine losen Dateien neben der Anwendung mehr. Sie reisen in der Assembly mit, adressiert über eine Zeichenfolge statt über einen Pfad auf der Platte.
Grafik, die neben der Anwendung ausgeliefert wird, ist einen vergessenen Kopierschritt vom Ausfall entfernt. Der Server antwortet mit einem Nicht-gefunden, das Control zeichnet nichts, und auf dem Entwicklerrechner liegt die Datei weiterhin. Deshalb überlebt das Problem meist, bis jemand anderes den Build ausführt.
Dafür gibt es keine API. Fügen Sie die Datei dem Projekt hinzu und setzen Sie ihre Build Action auf Embedded Resource. Die Bytes wandern in das Manifest der Assembly. Genau diese eine Eigenschaft macht aus einer gewöhnlichen Klassenbibliothek auch ein Icon-Pack, wie Modul sechs zeigen wird.
Adressieren Sie die Ressource als Zeichenfolge. Ohne Assembly-Namen durchsucht Wisej.NET die geladenen Assemblys nach einer passenden Ressource. Den Assembly-Namen ausdrücklich zu nennen, geschrieben ohne Dateiendung, beseitigt die Mehrdeutigkeit, wenn zwei Assemblys je eine Datei gleichen Namens enthalten könnten.
Der Handler liefert genau neun Erweiterungen aus: Stylesheets, Skripte, HTML, JPEG in beiden Schreibweisen, PNG, GIF, Vektorgrafik und Bitmaps. Sonst nichts. Eine hoffnungsvoll eingebettete Icon-Datei bleibt also ein Nicht-gefunden, und die Lösung heißt konvertieren statt die URL zu debuggen.
Eine mit der Anwendung ausgelieferte Datei kann dieselbe Adresse vor der eingebetteten Kopie beantworten. Das ist bei einem Kunden-Rebranding oder einer dringenden Korrektur ohne Neubau wirklich nützlich. Es heißt aber auch: Der Ordner mit diesen Überschreibungen ist jetzt etwas, das Sie schützen müssen.
Im Browser beantworten fünf Anfragen fünf erfolgreiche Antworten, alle aus der Anwendungs-Assembly, und das Neuladen kommt stattdessen aus dem Cache. Die Vektorgrafik bleibt durchgehend Markup. Sie wird an keiner Stelle zu einem System.Drawing-Bild.
Legen Sie ein Ersatzlogo neben die ausgelieferte Anwendung, und das Bild ändert sich ganz ohne Neubau. Danach erzeugt ein doppelter Buchstabe in einem Ressourcennamen ein Nicht-gefunden, und die Sechs-Schritte-Checkliste findet ihn in Schritt vier. Das ist schneller, als den Code erneut zu lesen.
Lab fünf: Betten Sie fünf Assets ein, zeigen Sie alle auf ResourceLab, qualifizieren Sie eine Quelle mit dem Assembly-Namen, überschreiben Sie eine per Datei und dokumentieren Sie die Fehlersuche.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 5 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Ressourcen einbetten, qualifizieren und überschreiben · 45 Min.
Ziel: Legen Sie in der Anwendung IconDesk einen Ordner Resources mit logo.svg, status-ok.svg, status-warning.svg, photo.png und badge.gif an und setzen Sie für jede dieser Dateien Build Action auf Embedded Resource. Bauen Sie eine Seite ResourceLab, die alle fünf über resource.wx-Bildquellen anzeigt, schreiben Sie eine dieser Quellen mit dem Assembly-Namen der Anwendung vor dem Dateinamen, damit die Auflösung eindeutig ist, und lassen Sie die übrigen unqualifiziert. Legen Sie dann eine Ersatzdatei neben die ausgelieferte Anwendung, um eine eingebettete Ressource zu überschreiben, und halten Sie den Zustand davor und danach fest. Schreiben Sie zum Abschluss eine resource.wx-URL absichtlich falsch und notieren Sie die Schritte, die den Fehler gefunden haben. Ergebnisse: Ordner Resources mit logo.svg, status-ok.svg, status-warning.svg, photo.png und badge.gif, alle als Embedded Resource markiert; Seite ResourceLab, die jedes eingebettete Asset über eine resource.wx-Bildquelle anzeigt; eine Bildquelle, die mit dem Assembly-Namen der Anwendung qualifiziert ist, während die übrigen unqualifiziert bleiben; ausgelieferte Datei, die eine eingebettete Ressource überschreibt, dokumentiert davor und danach; Fehlersuche-Notiz mit den Schritten, die eine falsch geschriebene Ressourcen-URL identifiziert haben.
Modul 6: Ein eigenes Wisej.NET-Icon-Pack bauen
Modul 6 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zum eigenen Icon-Pack an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Das vierstufige Rezept hinter jedem Icon-Pack: eine Klassenbibliothek, ein Verzeichnis Resources, Icon-Dateien mit Build Action Embedded Resource und ein statischer Katalog aus resource.wx-Strings, der dem Team IntelliSense statt magischer Pfade gibt – dazu die Konventionen für Benennung, Versionierung, Umfärben und Überschreiben, die das Pack wartbar halten. Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionZwölf SVGs werden zu einem wiederverwendbaren Icon-Pack · 14 Min.
Zwölf SVGs werden zu einem wiederverwendbaren Icon-Pack – ein geführter Video-Walkthrough zu Modul 6, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Modul sechs. IconDesk verwendet inzwischen überall Icons und besitzt keines davon. Die Abhilfe ist ein eigenes Pack: eine Klassenbibliothek, ein Resources-Ordner und zwölf Vektor-Icons, die als eingebettete Ressourcen markiert sind.
Im Moment wird dasselbe Icon auf vier Bildschirmen auf vier leicht verschiedene Arten geschrieben. Jeder dieser Pfade ist eine Zeichenfolge, drei davon kompilieren also einwandfrei und scheitern erst im Browser. Damit wandert der Fehler vom Build auf den Bildschirm eines Kunden.
Das dokumentierte Rezept hat vier Schritte: eine Klassenbibliothek anlegen, einen Resources-Ordner anlegen, die Icons hineinlegen und ihre Build Action auf Embedded Resource setzen. Heraus kommt eine Adresse aus Handler, Assembly-Name und Ressourcenpfad. Prüfen Sie sie einmal gegen die laufende Anwendung.
Der Katalog macht aus dieser Adresse IntelliSense. Eine private Konstante hält den gemeinsamen Teil des Pfades, und je eine öffentliche Konstante pro Icon benennt das Konzept statt der Datei. Aufrufer schreiben also einen Produktnamen wie Save oder Warning, statt einen Pfad zu wiederholen.
Zwei Wege enden bei derselben Zeichenfolge. Der Image Selector schreibt sie in Designer.cs, wenn eine Layout-Entscheidung das Icon wählt, und Laufzeitcode liest sie aus dem Katalog, wenn der Anwendungszustand entscheidet. Die Vektorgrafik bleibt dabei Markup, das der Client auflöst, nie ein System.Drawing-Bild.
Es läuft. Zwölf Icons kommen aus einer referenzierten Assembly, einzeln angefordert, sobald sie erstmals gebraucht werden, und beim nächsten Laden aus dem Browser-Cache bedient. Nichts in der Anwendung musste wissen, wo auf der Platte die Grafik liegt.
Das Farbsuffix färbt zwei Icons um und wird vom dritten ignoriert, weil in dieser Datei eine Farbe fest in der Grafik steht. Entfernen Sie den fest kodierten Wert aus dem Markup und prüfen Sie das Ergebnis danach im dunklen Theme, statt die Korrektur zu unterstellen.
Drei Gewohnheiten halten das Pack wartbar: ein Konzept pro Icon, der Katalog als öffentliche API des Packs, damit Umbenennen Sache des Compilers bleibt, und ein dokumentierter Überschreibungsweg für eine Anwendung, die unter demselben vertrauten Namen andere Grafik braucht.
Lab sechs: Bauen Sie die Bibliothek IconDesk.Icons mit zwölf eingebetteten Icons und dem Katalog, weisen Sie einige im Designer und einige im Code zu, prüfen Sie drei Umfärbungen und schreiben Sie die Versionierungsregeln.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 6 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – IconDesk.Icons: Ihr eigenes Pack · 45 Min.
Ziel: Erstellen Sie IconDesk.Icons als Klassenbibliothek neben der Anwendung, legen Sie mindestens zwölf SVG-Icons in ein Verzeichnis Resources und markieren Sie sie als Embedded Resource. Fügen Sie einen statischen Katalog AppIcons hinzu, der jedes Icon als benannten resource.wx-String bereitstellt, sodass niemand mehr einen Pfad tippt, referenzieren Sie die Bibliothek aus IconDesk und weisen Sie dann einige Icons über den Designer und andere in C# aus dem Katalog zu. Prüfen Sie das Farbsuffix an drei Icons und notieren Sie, welche SVG-Bereinigung sie dafür gebraucht haben. Schließen Sie mit den Regeln für Benennung und Versionierung ab, die bestimmen, wie ein neues Icon ins Pack kommt. Ergebnisse: Klassenbibliothek IconDesk.Icons mit mindestens zwölf SVG-Dateien in einem Verzeichnis Resources, alle als Embedded Resource; statischer Katalog AppIcons, der jedes Icon als benannten resource.wx-String bereitstellt; IconDesk-Seite, die einige Icons über den Designer und andere aus dem Katalog AppIcons zuweist; drei mit dem Farbsuffix geprüfte Icons samt Notiz zur nötigen SVG-Bereinigung; Regeln für Benennung und Versionierung, die beschreiben, wie ein neues Icon ins Pack kommt und wie eine Anwendung eines überschreibt.
Modul 7: Icon-Fonts, HTML-Inhalte und Icon-Strategie für den Produktivbetrieb
Modul 7 von Icons und Bilder in Wisej.NET – setzen Sie Icon-Packs, SVGs, Bitmaps, eingebettete Ressourcen und Icon-Fonts für scharfe, wartbare Oberflächen ein. Lesen Sie den Lektionsleitfaden und den Lab- und Prüfungsleitfaden, sehen Sie sich den Video-Walkthrough zu Icon-Fonts & Produktiv-Policy an, bestehen Sie den Wissenstest und schließen Sie dann das praktische Lab in IconDesk ab.
- LektüreLektionsleitfaden · 14 Min.
Der letzte Mechanismus und die Policy, die alle anderen zusammenhält: ein Icon-Font-Stylesheet, das aus Default.html geladen wird, AllowHtml auf den Steuerelementen, die Markup interpretieren sollen, Icon-Glyphen in DataGridView-Zellen mit rollenbasierten Element-Klicks und eine Checkliste für den Produktivbetrieb zu Barrierefreiheit, Lizenzen, Caching, externen Abhängigkeiten und visueller Konsistenz. Was das für Entwicklerinnen und Entwickler bedeutet, die die Grundlagen von C# beherrschen und schon etwas mit den Steuerelementen und dem Designer von Wisej.NET gearbeitet haben – und wie Sie dieses Modul lesen.
- LektüreLab- und Prüfungsleitfaden · 10 Min.
Was Sie im praktischen Lab bauen, das vorgeschlagene Vorgehen und die geforderten Ergebnisse.
- VideolektionIcon-Fonts, HTML-Inhalte und die Produktiv-Policy · 14 Min.
Icon-Fonts, HTML-Inhalte und die Produktiv-Policy – ein geführter Video-Walkthrough zu Modul 7, Schritt für Schritt in IconDesk aufgebaut. Läuft direkt hier im Player.
Transkript der Sprecherstimme
Icons und Bilder in Wisej.NET, Modul sieben, das Abschlussprojekt. IconDesk kann ein Icon bereits auf fünf Arten zeichnen. Jetzt kommt eine sechste dazu, und wichtiger noch: die schriftliche Regel, die zwischen ihnen entscheidet.
Ein Bildobjekt, eine Bildquellen-Zeichenfolge, ein Theme-Bild, eine eingebettete Ressource und jetzt eine Icon-Schrift. Sechs Mechanismen ohne schriftlich festgelegte erste Wahl: So sieht derselbe Delete-Befehl auf drei Bildschirmen derselben Anwendung unterschiedlich aus.
Eine Icon-Schrift umgeht die Bild-Pipeline vollständig. Ein Stylesheet-Link in der Default.html der Anwendung lässt den Browser das CSS und die Schriftdateien holen, und eine CSS-Klasse im Text eines Controls, das HTML erlaubt, zeichnet die Glyphe als Zeichen.
Keine Seite gewinnt klar. Wisej-Ressourcen bringen das Umfärben, den Image Selector und echte Bild-Eigenschaften. Schriften bringen ein vorhandenes CSS-Designsystem und lassen eine Glyphe inline im Text sitzen. Ob dieses Stylesheet aus einem öffentlichen Netz oder von Ihrem eigenen Server kommt, ist eine echte Entscheidung.
Im Code liegen die beiden Entscheidungen auf verschiedenen Ebenen. Der Stylesheet-Link gilt für die ganze Seite, HTML zu erlauben ist eine bewusste Entscheidung pro Control. Zwei Glyphen mit unterschiedlichen Rollen teilen sich dann eine Grid-Zelle, und der Klick meldet, welches Element tatsächlich getroffen wurde.
Und hier ist die Richtlinie. Theme-Bilder für semantische Grafik, die dem Theme folgt. Ein primäres Pack für Befehle. Das eigene Pack für Produktgrafik, die Ihnen gehört. Rasterformate für Fotos. Icon-Schriften nur dort, wo sich die HTML-Integration die zusätzliche Abhängigkeit wirklich verdient.
Die Übersichtsseite führt alle fünf Mechanismen gleichzeitig vor. Wechseln Sie das Theme, folgen nur das Theme-Bild und das umgefärbte Vektor-Icon. Das Pack-Icon, das Icon aus dem eigenen Pack und das eingebettete Asset bleiben genau so gezeichnet. Um dieses Verhalten herum ist die Richtlinie geschrieben.
Die Aktionsspalte beantwortet zwei verschiedene Klicks aus einer einzigen Zelle, indem sie die Rolle des getroffenen Elements ausliest. Der Qualitätsdurchgang wiederholt sich danach im dunklen Theme und prüft, ob jede Glyphe noch lesbar ist und jede Aktion einen Namen trägt, den ein Screenreader ansagen kann.
Das Abschlussprojekt: das Stylesheet und eine Toolbar, die HTML erlaubt, die rollenbewusste Grid-Spalte, die Übersichtsseite mit fünf Mechanismen, die schriftliche Icon-Richtlinie und eine Qualitätsnotiz zu Hell und Dunkel.
- LektüreKI-Coding-Übung · 20 Min.
Erstellen Sie das Beispielprojekt IconDesk dieses Moduls mit ChatGPT oder Claude aus einem fertigen Prompt, der das Modell auf die Spezifikation des Moduls verweist – und prüfen, starten und erweitern Sie dann, was Sie erhalten.
- WissenstestWissenstest – Modul 7 · 10 Min. · Bestehensgrenze 80%
- Praktisches LabLab – Abschlussprojekt: die Icon-Policy von IconDesk · 45 Min.
Ziel: Schließen Sie das Abschlussprojekt IconDesk ab. Referenzieren Sie ein Icon-Font-Stylesheet aus Default.html, setzen Sie AllowHtml auf einer kleinen Toolbar oder Karte und rendern Sie deren Icons als Font-Glyphen; bauen Sie dann eine DataGridView-Spalte, deren Zellen Icon-Font-Aktionen enthalten, und lesen Sie aus, welches Element angeklickt wurde, damit Edit und Delete Unterschiedliches tun. Bauen Sie eine Übersichtsseite, die alle Mechanismen des Kurses auf einmal zeigt: ein Theme-Bild, ein Icon aus einem offiziellen Pack, ein Icon aus dem eigenen Pack, ein eingebettetes Logo und ein umgefärbtes SVG. Schreiben Sie anschließend die Icon-Policy des Projekts für den Produktivbetrieb und führen Sie einen QA-Durchgang in einem hellen und einem dunklen Theme durch. Ergebnisse: Icon-Font-Stylesheet, das aus Default.html referenziert wird, und eine Toolbar oder Karte mit AllowHtml, die Font-Glyphen rendert; DataGridView-Spalte, deren Zellen Icon-Font-Aktionen rendern und auf das angeklickte Element reagieren; IconDesk-Übersichtsseite mit einem Theme-Bild, einem Icon aus einem offiziellen Pack, einem Icon aus dem eigenen Pack, einem eingebetteten Asset und einem umgefärbten SVG; schriftliche Icon-Policy für den Produktivbetrieb zu Barrierefreiheit, Lizenzen, Caching und externen Abhängigkeiten; QA-Durchgang in einem hellen und einem dunklen Theme mit festgehaltenen Ergebnissen.