
Es gibt eine beliebte
ZXing- Bibliothek zum
Ausgeben / Lesen von Barcodes. Es kann viele verschiedene Formate ausgeben und lesen: QRCode, Aztec und andere, mehr als 2 Dutzend. Zum Lesen von Codes verfügt es über eine fertige Steuerung ZXingScannerView. Ein Minimum an Code ist erforderlich, um diese Funktionalität zu Ihrer Anwendung hinzuzufügen.
Bei Verwendung dieser Bibliothek wird der Code jedoch kanonisch in Schwarzweiß angezeigt. Betrachten Sie den Fall, wenn Sie einen benutzerdefiniert aussehenden Code darstellen müssen, beispielsweise farbig, mit abgerundeten Elementen oder auf andere Weise dekoriert (und damit er weiterhin gut gelesen wird).
Und echte Gestaltungsfreiheit eröffnet sich erst, wenn Sie den Code selbst zeichnen - dann liegt alles ganz in Ihren Händen. Dies machen wir am Beispiel eines QR-Codes.
Die fertige Bewerbung ist da .Dieser Artikel implementiert einen Algorithmus, der dem Artikel entnommen ist:
QR-Code-Generierungsalgorithmus , Zeichnen mit der
SkiaSharp- Bibliothek ist
betroffen, und ein Beispiel für die Anwendung eines QR-Code-Generators mit einigen dekorativen Elementen wird angegeben - Hervorheben, Glätten von Linien und Hintergrund aus einer PNG-Datei.
Erläuterungen zur Implementierung
Beginnen wir mit der Erstellung einer leeren Xamarin.Forms-Anwendung. Erstellen Sie in Visual Studio ein neues Projekt, z. B. "Mobile App (Xamarin.Forms)", und wählen Sie dann die Vorlage "Leer" aus. Wählen Sie im Abschnitt "Plattformen" eine beliebige aus. SkiaSharp funktioniert auf vielen Plattformen, einschließlich auf Android und iOS.
Android- und iOS-Projekte bleiben unverändert, wir haben eine plattformübergreifende Implementierung.
In einem plattformübergreifenden Projekt:
Zwei Hintergrundbilder wurden hinzugefügt - eines für die gesamte Seite und das andere für den QR-Code. Bitte beachten Sie, dass sie eine "Build Action" "Embedded-Ressource" haben.
Die Ausgabe erfolgt in den Dateien MainPage.xaml und MainPage.xaml.cs
Die ImageResourceExtension-Klasse für die Verwendung von Bildern aus Ressourcen in xaml.
Die gesamte Logik befindet sich im QRCodeEncoder-Projekt. Es ist in Klassen unterteilt:
- Encoder - Codiert einen Datenstring in eine Folge von Einsen und Nullen
- Renderer - Positionieren Sie das resultierende Datenarray richtig, fügen Sie Overhead-Informationen hinzu und senden Sie die PNG-Datei an Stream zurück
Der QR-Code-Generierungsalgorithmus enthält viele Nachschlagewerke mit Zahlen. Was sie alle bedeuten, lesen Sie im Artikel „QR-Code-Generierungsalgorithmus“ (siehe oben).
Die Kanji-Kodierung (für Zeichen) ist in der Anwendung nicht implementiert.
Skiasharp
SkiaSharp ist eine plattformübergreifende 2D-Zeichnungsbibliothek für .NET. Es basiert auf der
Skia Graphics Library von Google. Verfügbar als NuGet-Paket:
nuget install SkiaSharp
Microsoft-Dokumentation:
SkiaSharp in Xamarin.FormsDas Zeichnen erfolgt in der Draw-Methode der Renderer-Klasse. Zum Beispiel sind einige Elemente rund, andere quadratisch:
canvas.DrawCircle() canvas.DrawRect()
Einige sind hervorgehoben:
var paint1 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.DeepSkyBlue }; var paint2 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.Red }; var paint3 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.Gold };
und zeigt, wie der Übergang zwischen benachbarten Elementen geglättet wird.
Beispiele
Und zum Schluss einige interessante QR-Codes aus dem Internet:





