【WPF】生成二维码

第一步,下载Google的ZXing类库,以便引用;

  BitMatrix bitMatrix;
    
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string content = this.txtChat.Text;


                Dictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>();
                hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
                
                bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200);
                this.img.Stretch = Stretch.Fill;
                this.img.Source = toImage(bitMatrix);
        }

下面代码是不同的转换

 private BitmapImage toImage(BitMatrix matrix)
        {
            try
            {
                int width = matrix.Width;
                int height = matrix.Height;

                Bitmap bmp = new Bitmap(width, height);
            
               // byte[] pixel = new byte[width * height];

                for (int x = 0; x <height ; x++)
                {
                    for (int y = 0; y < width; y++)
                    {
                        if (bitMatrix[x, y])
                        {
                            bmp.SetPixel(x,y,System.Drawing.Color.Black);
                        }
                        else
                        {
                            bmp.SetPixel(x, y, System.Drawing.Color.White);
                        }
                    }
                }

                return ConvertBitmapToBitmapImage(bmp);
            }
            catch (Exception ex)
            {
                throw ex;
            }
           
        }
        private static BitmapImage ConvertBitmapToBitmapImage(Bitmap wbm)
        {
            BitmapImage bimg = new BitmapImage();
            
            using (MemoryStream stream = new MemoryStream())
            {
                wbm.Save(stream , System.Drawing.Imaging.ImageFormat.Png);

                bimg.BeginInit();
                stream.Seek(0, SeekOrigin.Begin);
                bimg.StreamSource = stream;
                bimg.CacheOption = BitmapCacheOption.OnLoad;
                bimg.EndInit();
            }
            return bimg;

        }

 希望对你有一点点帮助!

posted @ 2014-02-21 17:38  YoMe  阅读(2030)  评论(0编辑  收藏  举报