需要做一个二维码的生成与读取功能,我用了ZXing.net,以下是生成二维码的核心代码.
/// <summary>
/// 根据字符串转换为QRCode
/// </summary>
/// <param name="qrValue">需要转换为二维码的字符串</param>
/// <param name="Height">图片的高度,默认为300</param>
/// <param name="Width">图片的宽度,默认为300</param>
private void ShowQRCodeFromValue(string qrValue,int Height=300,int Width=300)
{
if (Convert.ToInt32(heightTB.Text) != 300)
{
Height = Convert.ToInt32(heightTB.Text);
Width = Convert.ToInt32(widthTB.Text);
}
var barcodeWriter = new BarcodeWriter
{
Format = BarcodeFormat.QR_CODE,
Options = new EncodingOptions
{
Height = Height,
Width = Width,
Margin = 1
}
};
using (var bitmap = barcodeWriter.Write(qrValue))
using (var stream = new MemoryStream())
{
bitmap.Save(stream, ImageFormat.Png);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
stream.Seek(0, SeekOrigin.Begin);
bi.StreamSource = stream;
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.EndInit();
myimage.Source = bi;
if (myimage.IsVisible == false)
myimage.Visibility = Visibility.Visible;
myimage.IsEnabled = true;
}
}
根据函数ShowQRCodeFromValue实现了电话薄信息、电子邮件、网页书签、文本四种类型二维码的新建、复制、保存、打开识别功能,预览如下图。