WPF, Silverlight, Windows Phone 8 und Windows-Store-Apps

XAML: QR-Code generieren mit ZXing
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „Universal-Apps: Windows-10-Developer-Preview-Tools-SDK“.

Für die Bereitstellung von Informationen für mobile Endgeräte hat sich der QR-Code die letzten Jahre stark etabliert. Ganz gleich, ob es sich um Werbeplakate, Schilder oder Visitenkarten handelt, der QR-Code findet stets einen Platz. Es wird daher immer wichtiger, die gewünschten Informationen auch über Software dynamisch mittels QR-Code bereitstellen zu können. Die Anwendungsfälle sind zwar häufig für mobile Apps interessanter, dennoch bieten WPF-Anwendungen ebenfalls interessante Möglichkeiten.

Open-Source-Projekt ZXing

Das ausgereifte und umfangreiche Open-Source-Projekt ZXing bietet ein API zum Erstellen und Lesen von zahlreichen Barcodevarianten: QR-Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar und viele weitere. Das Projekt wurde ursprünglich für die Java-Welt entwickelt und anschließend von der Community auf .NET portiert. Unterstützt werden alle gängigen XAML-Projekttypen sowie auch Xamarin.

Im folgenden Beispiel wird gezeigt, wie einfach ein Universal-App-Projekt mit ZXing funktioniert. Nach dem Erstellen eines neuen Universal-App-Projekts wird die MainPage.xaml von Windows Phone in das Shared-Projekt kopiert. Anschließend wird es wieder aus dem Store- und Phone-Projekt entfernt. In den beiden Projekttypen Windows Store und Windows Phone müssen die nötigen ZXing Libaries mittels NuGet installiert werden.

In XAML wird ein Image-Steuerelement mit dem Namen QrCodeImage deklariert. Hier wird später der generierte QR-Code angezeigt. Zur Demonstration folgt die Implementierung in der Code-Behind-Datei (MainPage.xaml.cs) innerhalb der OnNavigatedTo-Methode. Das Erstellen eines QR-Codes wird mit der BarcodeWriter-Klasse ermöglicht. Die BarcodeWriter-Instanz benötigt dazu allgemeine Informationen, wie zum Beispiel, in welches Format die Information generiert werden soll, die Höhe und Breite vom binären Bild, sowie die gewünschte Farbe. Am Ende wird der QR-Code über die Write-Methode generiert und das Ergebnis dem Image-Steuerelement zugewiesen. Der Code dazu steht in Listing 2 und 3. Abbildung 1 zeigt das fertige Ergebnis auf einer Windows-Phone-8.1-App.

Abb. 1: Der generierte QR-Code in einer Windows-Phone-8.1-App


protected override void OnNavigatedTo(NavigationEventArgs e)
{
  IBarcodeWriter barcodeWriter = new BarcodeWriter
  {
    Format = BarcodeFormat.QR_CODE,
    Options = new ZXing.Common.EncodingOptions
    {
      Height = 300,
      Width = 300
    },
    Renderer = new ZXing.Rendering.PixelDataRenderer() { Foreground = Colors.Black }
  };

  var result = barcodeWriter.Write("http://about.me/gregor.biswanger");
  QrCodeImage.Source = result.ToBitmap() as WriteableBitmap;
}
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -