protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // set to QR bill only, i.e. 210 by 105 mm OutputSize savedOutputSize = Bill.Format.OutputSize; Bill.Format.OutputSize = OutputSize.QrBillOnly; // find smaller dimension float scale = MathF.Min(Size.Width / 210f, Size.Height / 105f); float xPadding = (Size.Width - scale * 210f) / 2f; float yPadding = (Size.Height - scale * 105f) / 2f; // draw white background RectangleF billBounds = new RectangleF(xPadding, yPadding, scale * 210f, scale * 105f); e.Graphics.FillRectangle(Brushes.White, billBounds); // draw QR bill using SystemDrawingCanvas canvas = new SystemDrawingCanvas(e.Graphics, xPadding, Size.Height - yPadding, scale, "Arial"); try { QRBill.Draw(Bill, canvas); } catch (QRBillValidationException) { // ignore invalid bill data } Bill.Format.OutputSize = savedOutputSize; }
private void PrintQRBill(PrintPageEventArgs e) { // ouput size for QR bill: 210 x 297mm bill.Format.OutputSize = OutputSize.A4PortraitSheet; // print QR bill at bottom of page e.Graphics.PageUnit = GraphicsUnit.Millimeter; using SystemDrawingCanvas canvas = new SystemDrawingCanvas(e.Graphics, 0, 297, 1, "Arial"); QRBill.Draw(bill, canvas); }