XZing和Xamarin形式

时间:2018-08-08 16:27:51

标签: c# xamarin xamarin.forms zxing zxing.net

我正在尝试使用ZXing在Xamarin中在屏幕上呈现简单的条形码。我已将ZXing软件包添加到解决方案中,并具有以下代码:

        BarcodeWriterPixelData writer = new BarcodeWriterPixelData
        {
            Format = BarcodeFormat.CODE_39 ,
            Options = new ZXing.Common.EncodingOptions{
                Height = 80,
                Width = 30,
                Margin = 0
            }
        };
        var data = writer.Write("18898798790");
        IDBarCode.Source = ImageSource.FromStream(() => new MemoryStream(data.Pixels));

但是我的代码运行时没有在屏幕上呈现任何内容。我一直在寻找某种可以成功使用的样本。

2 个答案:

答案 0 :(得分:1)

别忘了在平台项目中初始化ZXing库,否则它将显示为空。您可以通过添加以下内容来实现:

// On iOS in your AppDelegate.cs in the FinishedLaunching method
ZXing.Net.Mobile.Forms.iOS.Platform.Init();

// On Android in the MainActivity.cs in the OnCreate method
ZXing.Net.Mobile.Forms.Android.Platform.Init();

答案 1 :(得分:0)

尝试了无数种不同的事情之后,一无所获并联系了ZXing的开发团队,我放弃了,使用了另一种方法。

如果使用正常的Image,我会改用ZXing组件,并且现在一切正常。这是代码:

    private ZXingBarcodeImageView barcode=null;
    public MainPage()
    {
        InitializeComponent();
    }

    void Handle_Clicked(object sender, System.EventArgs e)
    {
        if (barcode==null){
            barcode = new ZXingBarcodeImageView
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions = LayoutOptions.FillAndExpand,
            };
            barcode.BarcodeFormat = ZXing.BarcodeFormat.CODE_128;
            barcode.BarcodeOptions.Width = 500;
            barcode.BarcodeOptions.Height = 100;
            barcode.BarcodeValue = contentEntry.Text.Trim();
            barResult.Content = barcode;
        }else{
            barcode.BarcodeValue = contentEntry.Text.Trim();
        }

    }

barResult只是一个简单的ContentView,其中没有任何内容。

        <ContentView x:Name="barResult">                
        </ContentView>