/// <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); }
/// <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); }
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); }
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); }
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); } }
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); } }