2016-08-10 7 views
0

Эй я изображение генерируется в ZXingBarcodeImageView Я хочу, чтобы преобразовать его в ImageSource так что я могу связать изображение в XAML, как добиться этого, Хороший день и спасибоКак конвертировать изображения в ImageSource Xamarin.Form

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} />  

ответ

0

Я предполагаю, что для создания изображений используется компонент, специфичный для платформы. Этот компонент либо сохраняет сгенерированное изображение в файловой системе, либо возвращает двоичное представление в памяти.

Чтобы преобразовать файл в ImageSource, вы должны использовать ImageSource.FromFile(). Чтобы преобразовать поток, используйте ImageSource.FromStream().

Вы можете найти API here и отличную документацию there.

В вашем случае выше BindingContext (независимо от того, является ли это страницей или ViewModel не имеет значения) придется публиковать публичное свойство типа ImageSource и возвращает преобразованное изображение, используя любой из приведенных выше способов.

0

Класс ZXingBarcodeImageView не разоблачить ImageSource свойства, потому что он предназначен для использования вместоImage. Вы можете разместить его либо в XAML, либо в C#.

Например:

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# бэкэнда:

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

 Смежные вопросы

  • Нет связанных вопросов^_^