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 = 0 }; 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;