我正在尝试使用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));
但是我的代码运行时没有在屏幕上呈现任何内容。我一直在寻找某种可以成功使用的样本。
答案 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>