/// <summary>
        /// 创建二维码并保存到指定文件中
        /// </summary>
        /// <param name="text">待编码字符串</param>
        /// <param name="size">二维码大小</param>
        /// <param name="fileName">输出路径(D:\123.png)</param>
        /// <returns>返回是否成功</returns>
        public static bool Save(string text, int size, string fileName)
        {
            // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
            ErrorCorrectionLevel el = ErrorCorrectionLevel.H;
            //空白区域 有zreo 也就是0 没有边框 此处还要乘以2才得到空白区域的宽度。
            QuietZoneModules qzm = QuietZoneModules.Two;
            //二维码大小
            FixedModuleSize fms       = new FixedModuleSize(size, qzm);
            QrEncoder       qrEncoder = new QrEncoder(el);
            QrCode          qrCode    = null;

            try
            {
                if (qrEncoder.TryEncode(text, out qrCode))//对内容进行编码,并保存生成的矩阵
                {
                    GraphicsRenderer render = new GraphicsRenderer(fms, Brushes.Black, Brushes.White);
                    //.WriteToStream(matrix, ImageFormat.Png, stream, new Point(600, 600)); 是跟打印有关的DPI分辨率的参数,默认即可,调整对调整图片大小没有作用
                    using (FileStream stream = new FileStream(fileName, FileMode.Create))
                    {
                        render.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream);
                    }
                }
                else
                {
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// 开始绘制(仅覆盖)
        /// </summary>
        /// <param name="text">内容文字</param>
        /// <param name="pictureSize">图片大小</param>
        public void Draw(string text, int pictureSize)
        {
            QrCode           qrCode     = qrEncoder.Encode(text);
            FixedModuleSize  moduleSize = new FixedModuleSize(pictureSize, QuietZoneModules.Zero);
            GraphicsRenderer render     = new GraphicsRenderer(moduleSize, darkBrush, lightBrush);

            render.Draw(graphics, qrCode.Matrix);
        }
Beispiel #3
0
        private void ShowCode(Graphics g)
        {
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.L);
            QrCode    qrCode    = qrEncoder.Encode(str);

            FixedModuleSize  moduleSize = new FixedModuleSize(2, QuietZoneModules.Two);
            GraphicsRenderer render     = new GraphicsRenderer(moduleSize, Brushes.Black, Brushes.White);

            render.Draw(g, qrCode.Matrix);
        }
Beispiel #4
0
        private void ShowCode(Graphics g)
        {
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.L);
            QrCode    qrCode    = qrEncoder.Encode(str);

            FixedModuleSize  moduleSize = new FixedModuleSize(4, QuietZoneModules.Two);
            GraphicsRenderer render     = new GraphicsRenderer(moduleSize, Brushes.Black, Brushes.White);
            Point            mP         = new Point(627, 595);//设置二维码左上角的位置

            render.Draw(g, qrCode.Matrix, mP);
        }
Beispiel #5
0
        public Stream QrImage(string text)
        {
            var ms = new MemoryStream();
            ErrorCorrectionLevel Ecl    = ErrorCorrectionLevel.M; //误差校正水平
            string           Content    = text;                   //待编码内容
            QuietZoneModules QuietZones = QuietZoneModules.Two;   //空白区域
            int    ModuleSize           = 12;                     //大小
            var    encoder = new QrEncoder(Ecl);
            QrCode qr;

            if (encoder.TryEncode(Content, out qr))                                              //对内容进行编码,并保存生成的矩阵
            {
                FixedModuleSize fms        = new FixedModuleSize(ModuleSize, QuietZones);        //Color.FromArgb(1, 127, 38, 0)
                Brush           darkBrush  = new SolidBrush(TranslateHexToRGBColor("C8000000")); //(Color.FromArgb(127, 38, 0));
                Brush           lightBrush = new SolidBrush(TranslateHexToRGBColor("00ffffff")); //Brushes.Transparent;
                var             render     = new GraphicsRenderer(fms, darkBrush, lightBrush);
                render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);
                return(ms);
            }
            else
            {
                return(null);
            }
        }
Beispiel #6
0
        void test1(PrintPageEventArgs e)
        {
            int x = Convert.ToInt32(e.PageSettings.PrintableArea.X);
            int y = Convert.ToInt32(e.PageSettings.PrintableArea.Y);

            int   h   = Convert.ToInt32(e.PageSettings.PrintableArea.Height);
            int   w   = Convert.ToInt32(e.PageSettings.PrintableArea.Width);
            Point dpi = new Point(e.PageSettings.PrinterResolution.X, e.PageSettings.PrinterResolution.Y);


            //e.Graphics.DrawString("This is a test", new Font(FontFamily.GenericSansSerif, 12), Brushes.Blue, new PointF(0, 0));

            QrEncoder qrEncoder = new QrEncoder(Gma.QrCodeNet.Encoding.ErrorCorrectionLevel.L);


            ISizeCalculation iSizeCal = new FixedModuleSize(1, QuietZoneModules.Two);
            //ISizeCalculation iSizeCal = new FixedCodeSize(25, QuietZoneModules.Two);


            GraphicsRenderer gRenderer = new GraphicsRenderer(iSizeCal,
                                                              System.Drawing.Brushes.Black, System.Drawing.Brushes.White);


            QrCode qrCode1 = qrEncoder.Encode("Victor says hi");
            QrCode qrCode2 = qrEncoder.Encode("Victor says goodbye");
            QrCode qrCode3 = qrEncoder.Encode("0123456789");
            QrCode qrCode4 = qrEncoder.Encode("ABCDEF1234");


            DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(iSizeCal,
                                                                      System.Windows.Media.Brushes.Black, System.Windows.Media.Brushes.White);
            DrawingBrush dBrush = dRenderer.DrawBrush(qrCode1.Matrix);

            int side = w;

            if (w > h)
            {
                side = h;
            }



            gRenderer.Draw(e.Graphics, qrCode1.Matrix);

            var   size   = iSizeCal.GetSize(qrCode1.Matrix.Width);
            Point offset = new Point(size.CodeWidth + 10, 0);

            gRenderer.Draw(e.Graphics, qrCode2.Matrix, offset);

            size      = iSizeCal.GetSize(qrCode2.Matrix.Width);
            offset.X += size.CodeWidth + 10;
            gRenderer.Draw(e.Graphics, qrCode3.Matrix, offset);

            size      = iSizeCal.GetSize(qrCode3.Matrix.Width);
            offset.X += size.CodeWidth + 10;
            gRenderer.Draw(e.Graphics, qrCode4.Matrix, offset);

            using (FileStream stream = new FileStream("test.png", FileMode.Create))
            {
                gRenderer.WriteToStream(qrCode1.Matrix, ImageFormat.Png, stream);
                gRenderer.WriteToStream(qrCode2.Matrix, ImageFormat.Png, stream);
            }
        }