2016-08-10 12 views
0

Hey ich habe Bild in ZXingBarcodeImageView erzeugt ich das Imagesource konvertieren wollen, so kann ich das Bild in XAML binden, wie dies zu erreichen, Guten Tag und DankeWie Bild Image Xamarin.Form konvertieren

public class GenerateCode: IGenerateCode 
{ 
    ZXingBarcodeImageView barcode; 

    public ImageSource GenerateQr(string code) 
    { 
     barcode = new ZXingBarcodeImageView 
     { 
      HorizontalOptions = LayoutOptions.FillAndExpand, 
      VerticalOptions = LayoutOptions.FillAndExpand, 
     }; 
     barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE; 
     barcode.BarcodeOptions.Width = 100; 
     barcode.BarcodeOptions.Height = 100; 
     barcode.BarcodeOptions.Margin = 10; 
     barcode.BarcodeValue = code; 
     return barcode; error as barcode is an image 
    } 
} 



<Image Source={Binding imgSource} />  

Antwort

0

Ich vermute, dass Sie eine plattformspezifische Komponente verwenden, um Bilder zu generieren. Diese Komponente speichert das generierte Bild entweder im Dateisystem oder gibt eine binäre Darstellung im Speicher zurück.

Um eine Datei in eine ImageSource zu konvertieren, würden Sie ImageSource.FromFile() verwenden. Um einen Stream zu konvertieren, verwenden Sie ImageSource.FromStream().

Sie können die APIs here und einige großartige Dokumentation there finden.

In Ihrem Fall oben muss die BindingContext (ob das eine Seite oder ein ViewModel ist egal) eine öffentliche Eigenschaft des Typs ImageSource verfügbar machen und das konvertierte Bild mit einer der oben genannten Methoden zurückgeben.

0

Die Klasse ZXingBarcodeImageView keine ImageSource Eigenschaft aus, da diese stattImage verwendet gemeint werden. Sie können es entweder in XAML oder C# platzieren.

Zum Beispiel:

XAML:

<!-- this goes in your root node --> 
<!-- xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms" --> 

<zxing:ZXingBarcodeImageView BarcodeValue="{Binding Code}" BarcodeFormat="QR_CODE" BarcodeOptions="{Binding Options}" /> 

C# Backend:

protected override void OnAppearing() 
{ 
    BindingContext = new 
    { 
     Code = code; 
     Options = new EncodingOptions() 
     { 
      Width = 100, 
      Height = 100, 
      Margin = 10, 
     } 
    }; 
}