WPF可以通过ZXing.Net库来实现二维码的功能。
可以通过NuGet安装:
Install-Package ZXing.Net
二维码的实现代码:
#region 二维码的方法
/// <summary>
/// 注销对象方法API
/// </summary>
/// <param name="obj">准备注销的对象</param>
/// <returns></returns>
[DllImport("gdi32")]
static extern int DeleteObject(IntPtr obj); /// <summary>
/// 生成二维码图形
/// </summary>
/// <param name="content">二维码文本内容</param>
/// <param name="width">图片宽度</param>
/// <param name="height">图片高度</param>
/// <returns>二维码图形</returns>
private BitmapSource CreateQRCode(string content, int width, int height)
{
EncodingOptions options;
//包含一些编码、大小等的设置
//BarcodeWriter :一个智能类来编码一些内容的条形码图像
BarcodeWriter write = null;
options = new QrCodeEncodingOptions
{
DisableECI = true,
CharacterSet = "UTF-8",
Width = width,
Height = height,
Margin =
};
write = new BarcodeWriter();
//设置条形码格式
write.Format = BarcodeFormat.QR_CODE;
//获取或设置选项容器的编码和渲染过程。
write.Options = options;
//对指定的内容进行编码,并返回该条码的呈现实例。渲染属性渲染实例使用,必须设置方法调用之前。
Bitmap bitmap = write.Write(content);
IntPtr ip = bitmap.GetHbitmap();//从GDI+ Bitmap创建GDI位图对象
//Imaging.CreateBitmapSourceFromHBitmap方法,基于所提供的非托管位图和调色板信息的指针,返回一个托管的BitmapSource
BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(ip); return bitmapSource;
}
#endregion
生成二维码的调用代码:
var strCode = tbxKeyword.Text;
if (string.IsNullOrEmpty(strCode))
{
MessageBox.Show("请输入二维码文本内容");
tbxKeyword.Focus();
return;
} imageData = CreateQRCode(strCode, mSettings.QRCodeSize, mSettings.QRCodeSize);
imgQRCode.Source = imageData;