Проблемы с классом BarcodeWriter при формировании QR-кода
Здравствуйте уважаемые специалисты. Решил использовать пробный вариант кода и посмотреть, как вообще формируются QR-кода в WPF, но столкнулся с тем, что видимо проект не видит класса BarcodeWriter. Честно говоря, думал, что все ограничится одним лишь пакетом ZXing, но похоже это не так. В чем может заключаться проблема - не понимаю. Дело в том, что данный класс все-таки должен содержаться в этой библиотеке, так как при удалении using ZXing, VisualStudio пишет, что нет такого пакета или пространства имен, а с подключенным пакетом: базовый класс для конкретных устройств записи штрих-кодов с определенными форматами изображений штрих-кода, т.е. он его видит. Еще пишет: Использование универсального типа "BarcodeWriter<TOutput>" требует аргументы типа 1. Возможно решение совсем на поверхности, но для меня это пока не понятно. Подскажите пожалуйста, как это исправить, что необходимо поменять или добавить.
Файл .cs:
using System;
using System.IO;
using System.Windows;
using System.Windows.Media.Imaging;
using ZXing;
namespace EmployeeSystem
{
/// <summary>
/// Логика взаимодействия для QR_code.xaml
/// </summary>
public partial class QR_code : Window
{
public int ProductCode { get; set; }
public QR_code()
{
InitializeComponent();
}
private void BtnConvert_Click(object sender, RoutedEventArgs e)
{
try
{
System.Drawing.Image img = null;
BitmapImage bimg = new BitmapImage();
using (var ms = new MemoryStream())
{
BarcodeWriter writer;
writer = new ZXing.BarcodeWriter() { Format = BarcodeFormat.QR_CODE };
writer.Options.Height = 80;
writer.Options.Width = 280;
writer.Options.PureBarcode = true;
img = writer.Write(this.txtbarcodecontent.Text);
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = 0;
bimg.BeginInit();
bimg.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bimg.CacheOption = BitmapCacheOption.OnLoad;
bimg.UriSource = null;
bimg.StreamSource = ms;
bimg.EndInit();
this.imgbarcode.Source = bimg;// return File(ms.ToArray(), "image/jpeg");
this.tbkbarcodecontent.Text = this.txtbarcodecontent.Text;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Файл .xaml для большей понятности:
<Window x:Class="EmployeeSystem.QR_code"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EmployeeSystem"
mc:Ignorable="d"
Title="QR_code" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="200"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="30"/>
<RowDefinition Height="40"/>
<RowDefinition Height="200"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="QR Code Generator" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" FontSize="30"/>
<TextBlock Text="QR Code Content :" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBox Grid.Column="1" Grid.Row="1" Name="txtbarcodecontent"/>
<Button Content="Generate" Name="btnConvert" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right" Width="100" Click="BtnConvert_Click"/>
<TextBlock Text="QR Code :" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Top"/>
<StackPanel Grid.Row="3" Grid.Column="1" Orientation="Vertical">
<Image Name="imgbarcode"/>
<TextBlock Name="tbkbarcodecontent" FontWeight="Bold" HorizontalAlignment="Center"/>
</StackPanel>
</Grid>
</Window>