private void GenerateRendering(Graphics g) { Rectangle clientRectangle = base.ClientRectangle; Brush brush = new SolidBrush(this._page.BackColor); g.FillRectangle(brush, clientRectangle); brush.Dispose(); Watermark watermark = this._page.Watermark; if (watermark.Image != null) { Image image = watermark.Image; Size size = image.Size; Point empty = Point.Empty; switch (watermark.Placement) { case WatermarkPlacement.TopRight: empty = new Point(clientRectangle.Width - size.Width, 0); break; case WatermarkPlacement.BottomLeft: empty = new Point(0, clientRectangle.Height - size.Height); break; case WatermarkPlacement.BottomRight: empty = new Point(clientRectangle.Width - size.Width, clientRectangle.Height - size.Height); break; case WatermarkPlacement.Center: empty = new Point((clientRectangle.Width - size.Width) / 2, (clientRectangle.Height - size.Height) / 2); break; } g.DrawImageUnscaled(image, empty); } Point autoScrollPosition = base.AutoScrollPosition; ElementRenderData renderData = null; g.TranslateTransform((float) autoScrollPosition.X, (float) autoScrollPosition.Y); try { if (this._page.AntiAliasedText) { g.TextRenderingHint = TextRenderingHint.AntiAlias; g.SmoothingMode = SmoothingMode.AntiAlias; } renderData = new ElementRenderData(g, autoScrollPosition, base.ContainsFocus, this._page.AntiAliasedText); renderData.SetLinkColor(this._page.LinkColor); if (renderData.LinkColor.IsEmpty) { renderData.SetLinkColor(this.ForeColor); } renderData.SetHoverColor(this._page.HoverColor); if (renderData.HoverColor.IsEmpty) { renderData.SetHoverColor(this._page.LinkColor); } if (renderData.HoverColor.IsEmpty) { renderData.SetHoverColor(this.ForeColor); } this._page.CreateRendering(renderData, autoScrollPosition, new Point(0, base.ClientSize.Height)); if (renderData.ShowFocus && (this._focusIndex != -1)) { VisualElement element = (VisualElement) this._focusableElements[this._focusIndex]; Rectangle bounds = element.Bounds; if (!bounds.IsEmpty) { bounds.Offset(autoScrollPosition); if ((bounds.Bottom >= 0) && (bounds.Top <= base.ClientSize.Height)) { element.RenderFocusCues(renderData); } } } } finally { if (renderData != null) { renderData.Dispose(); renderData = null; } g.TranslateTransform((float) -autoScrollPosition.X, (float) -autoScrollPosition.Y); } }
private Size CalculateRendering(Graphics g) { if ((this._page == null) || (this._page.Elements.Count == 0)) { return Size.Empty; } if (this._page.AntiAliasedText) { g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel; g.SmoothingMode = SmoothingMode.AntiAlias; } ElementRenderData renderData = new ElementRenderData(g, Point.Empty, false, this._page.AntiAliasedText); Size empty = Size.Empty; try { empty = this._page.CreateLayout(renderData, Point.Empty, new Size(base.ClientSize.Width, 0)); } finally { if (renderData != null) { renderData.Dispose(); renderData = null; } } return empty; }