예제 #1
0
        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;
        }
예제 #2
0
        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);
        }