2016-06-27 8 views
1

Wir verwenden derzeit Canvas, um Barcode in UI für WinRT, UWP zu rendern. Dies erreichen wir, indem wir jeden Punkt (schwarze Punkte im QR-Barcode) als Pfade im Canvas hinzufügen, was beim Rendern mehr Zeit für die Anzeige des Barcodes benötigt. Was ist der effiziente Weg, um dies mit hoher Leistung zu erreichen.Die beste Methode, Canvas mit vielen Pfaden als untergeordnete Elemente zu verwenden

QR Barcode Image:

enter image description here

+1

Rendern Sie einmal auf eine Leinwand außerhalb des Bildschirms, und rendern Sie diese Leinwand bei Bedarf. Oder verwenden Sie die Path2D-Schnittstelle https://developer.mozilla.org/en-US/docs/Web/API/Path2D – Blindman67

+1

Verwenden Sie eine [WriteableBitmap] (https://msdn.microsoft.com/en-us/library/ windows/apps/br243259)? – Clemens

+1

Die Zxing-Bibliothek gibt Ihnen das Bild. Ist dir das bewusst? –

Antwort

0

habe ich eine Lösung für dieses, durch den Barcode als Bildzeichnung statt Leinwand.

public WriteableBitmap Render() 
    { 

     byte[] foreground = new byte[] { 0, 0, 0, 255 }; 
     byte[] background = new byte[] { 0, 100, 0, 255 }; 
     WriteableBitmap bmp = new WriteableBitmap(2, 2); 

     bmp.PixelBuffer.AsStream().Write(foreground, 0, 4); 
     bmp.PixelBuffer.AsStream().Write(background, 0, 4); 
     bmp.PixelBuffer.AsStream().Write(foreground, 0, 4); 
     bmp.PixelBuffer.AsStream().Write(background, 0, 4); 


     bmp.Invalidate(); 
     return bmp; 
    }