Example #1
0
        /// <inheritdoc/>
        public override void Draw(FRPaintEventArgs e)
        {
            if (IsDesigning)
            {
                return;
            }

            Graphics   g        = e.Graphics;
            RectangleF pageRect = new RectangleF(0, 0,
                                                 WidthInPixels - 1 / e.ScaleX, HeightInPixels - 1 / e.ScaleY);
            RectangleF printableRect = new RectangleF(
                LeftMargin * Units.Millimeters,
                TopMargin * Units.Millimeters,
                (PaperWidth - LeftMargin - RightMargin) * Units.Millimeters,
                (PaperHeight - TopMargin - BottomMargin) * Units.Millimeters);

            DrawBackground(e, pageRect);
            Border.Draw(e, printableRect);
            if (Watermark.Enabled)
            {
                if (!Watermark.ShowImageOnTop)
                {
                    Watermark.DrawImage(e, pageRect, Report, IsPrinting);
                }
                if (!Watermark.ShowTextOnTop)
                {
                    Watermark.DrawText(e, pageRect, Report, IsPrinting);
                }
            }

            float leftMargin = (int)Math.Round(LeftMargin * Units.Millimeters * e.ScaleX);
            float topMargin  = (int)Math.Round(TopMargin * Units.Millimeters * e.ScaleY);

            g.TranslateTransform(leftMargin, topMargin);

            try
            {
                foreach (Base c in AllObjects)
                {
                    if (c is ReportComponentBase && c.HasFlag(Flags.CanDraw))
                    {
                        ReportComponentBase obj = c as ReportComponentBase;
                        if (!IsPrinting)
                        {
#if !MONO
                            if (!obj.IsVisible(e))
                            {
                                continue;
                            }
#endif
                        }
                        else
                        {
                            if (!obj.Printable)
                            {
                                continue;
                            }
                            else if (obj.Parent is BandBase && !(obj.Parent as BandBase).Printable)
                            {
                                continue;
                            }
                        }
                        obj.SetDesigning(false);
                        obj.SetPrinting(IsPrinting);
                        obj.Draw(e);
                        obj.SetPrinting(false);
                    }
                }
            }
            finally
            {
                g.TranslateTransform(-leftMargin, -topMargin);
            }

            if (Watermark.Enabled)
            {
                if (Watermark.ShowImageOnTop)
                {
                    Watermark.DrawImage(e, pageRect, Report, IsPrinting);
                }
                if (Watermark.ShowTextOnTop)
                {
                    Watermark.DrawText(e, pageRect, Report, IsPrinting);
                }
            }
        }