示例#1
0
        protected override void OnPaint(PaintEventArgs pevent)
        {
            base.OnPaint(pevent);
            PreviewPageInfo[] previewPageInfoArray = (PreviewPageInfo[])typeof(PrintPreviewControl).GetField("pageInfo", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object)this);
            if (previewPageInfoArray == null || previewPageInfoArray.Length == 0)
            {
                return;
            }
            Point empty  = Point.Empty;
            int   val1   = 0;
            Size  size1  = this.Size;
            Size  size2  = this.Size;
            Point point1 = new Point(this.VirtualSize);
            Point point2 = new Point(Math.Max(0, (size1.Width - point1.X) / 2), Math.Max(0, (size2.Height - point1.Y) / 2));

            point2.X -= this.ScrollOffset.X;
            point2.Y -= this.ScrollOffset.Y;
            int pixels1 = RadPrintPreviewControl.PhysicalToPixels(10, this.screendpi.Y);
            int pixels2 = RadPrintPreviewControl.PhysicalToPixels(10, this.screendpi.X);

            Rectangle[] rectangleArray = new Rectangle[this.Rows * this.Columns];
            for (int index1 = 0; index1 < this.Rows; ++index1)
            {
                empty.X = 0;
                empty.Y = val1 * index1;
                for (int index2 = 0; index2 < this.Columns; ++index2)
                {
                    int index3 = this.StartPage + index2 + index1 * this.Columns;
                    if (index3 < previewPageInfoArray.Length)
                    {
                        Size  physicalSize = previewPageInfoArray[index3].PhysicalSize;
                        Point pixels3      = RadPrintPreviewControl.PhysicalToPixels(new Point(new Size((int)(this.Zoom * (double)physicalSize.Width), (int)(this.Zoom * (double)physicalSize.Height))), this.screendpi);
                        int   x            = point2.X + pixels2 * (index2 + 1) + empty.X;
                        int   y            = point2.Y + pixels1 * (index1 + 1) + empty.Y;
                        empty.X += pixels3.X;
                        val1     = Math.Max(val1, pixels3.Y);
                        rectangleArray[index3 - this.StartPage] = new Rectangle(x, y, pixels3.X, pixels3.Y);
                    }
                }
            }
            for (int index = 0; index < rectangleArray.Length; ++index)
            {
                if (index + this.StartPage < previewPageInfoArray.Length)
                {
                    Rectangle rect = rectangleArray[index];
                    Pen       pen1 = new Pen(this.PageBorderColor);
                    pevent.Graphics.DrawRectangle(pen1, rect);
                    pen1.Dispose();
                    Brush brush = (Brush) new SolidBrush(this.PageShadowColor);
                    int   num   = Math.Min(1 + (int)Math.Ceiling((double)this.ShadowThickness * this.Zoom), 10);
                    pevent.Graphics.FillRectangle(brush, new Rectangle(rect.Left + num, rect.Bottom + 1, rect.Width + 1, num));
                    pevent.Graphics.FillRectangle(brush, new Rectangle(rect.Right + 1, rect.Top + num, num, rect.Height));
                    rect.Inflate(-1, -1);
                    --rect.Width;
                    --rect.Height;
                    Pen pen2 = new Pen(this.PageInnerBorderColor);
                    pevent.Graphics.DrawRectangle(pen2, rect);
                }
            }
        }
示例#2
0
 public static Point PhysicalToPixels(Point physical, Point dpi)
 {
     return(new Point(RadPrintPreviewControl.PhysicalToPixels(physical.X, dpi.X), RadPrintPreviewControl.PhysicalToPixels(physical.Y, dpi.Y)));
 }