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); } } }
public static Point PhysicalToPixels(Point physical, Point dpi) { return(new Point(RadPrintPreviewControl.PhysicalToPixels(physical.X, dpi.X), RadPrintPreviewControl.PhysicalToPixels(physical.Y, dpi.Y))); }