protected override void OnPostPaint(NPaintVisitor visitor) { base.OnPostPaint(visitor); if (String.IsNullOrEmpty(m_Status)) { return; } visitor.ClearStyles(); visitor.SetFont(Font); // Determine status bounds NRectangle contentArea = GetContentEdge(); double length = NMath.Max(contentArea.Width, contentArea.Height) * 0.3; NRectangle statusBounds = new NRectangle(contentArea.Right - length - 5, contentArea.Top + 5, length, length); // Fill the status bounds with a circle NExamplesHomePage homePage = (NExamplesHomePage)GetFirstAncestor(NExamplesHomePage.NExamplesHomePageSchema); NColor color = homePage.GetStatusColor(m_Status); visitor.SetFill(new NColor(color, 160)); visitor.PaintEllipse(statusBounds); // Create text paint settings NPaintTextRectSettings settings = new NPaintTextRectSettings(); settings.HorzAlign = ENTextHorzAlign.Center; settings.VertAlign = ENTextVertAlign.Center; // Paint the status text in the top right corner visitor.SetFill(NColor.White); visitor.PaintString(statusBounds, m_Status, ref settings); }
void PaintJoint(NPaintVisitor pv, double radius) { double innerR = radius - 3; pv.PaintEllipse(-radius, -radius, 2 * radius, 2 * radius); pv.PaintEllipse(-innerR, -innerR, 2 * innerR, 2 * innerR); }
void PaintGripper(NPaintVisitor pv) { if (m_ArmGripperPath == null) { m_ArmGripperPath = new NGraphicsPath(); m_ArmGripperPath.StartFigure(0, -6); m_ArmGripperPath.LineTo(20, -6); m_ArmGripperPath.LineTo(20, -14); m_ArmGripperPath.LineTo(30, -14); m_ArmGripperPath.LineTo(30, 14); m_ArmGripperPath.LineTo(20, 14); m_ArmGripperPath.LineTo(20, 6); m_ArmGripperPath.LineTo(0, 6); m_ArmGripperPath.CloseFigure(); m_ArmGripperPath.StartFigure(30, -14); m_ArmGripperPath.LineTo(40, -14); m_ArmGripperPath.LineTo(50, -10); m_ArmGripperPath.LineTo(50, -7); m_ArmGripperPath.LineTo(30, -7); m_ArmGripperPath.CloseFigure(); m_ArmGripperPath.StartFigure(30, 14); m_ArmGripperPath.LineTo(40, 14); m_ArmGripperPath.LineTo(50, 10); m_ArmGripperPath.LineTo(50, 7); m_ArmGripperPath.LineTo(30, 7); m_ArmGripperPath.CloseFigure(); } pv.PaintPath(m_ArmGripperPath); }
protected void OnExportWithDirect2DMenuItemClick(NEventArgs args) { #if SUPPORT_DIRECT2D && DEBUG string fileName = "d:\\D2D_output.png"; NSize imgSize = new NSize(this.Width, this.Height); try { Nevron.Windows.DirectX.ND2DGraphicsHelper gh = new Nevron.Windows.DirectX.ND2DGraphicsHelper(); INGraphics2D pdfG = gh.CreateGraphics((int)imgSize.Width, (int)imgSize.Height); NRegion clip = NRegion.FromRectangle(new NRectangle(0, 0, imgSize.Width, imgSize.Height)); NMatrix canvasTransform = NMatrix.Identity; NMatrix invertedCT = canvasTransform; invertedCT.Invert(); NPaintVisitor visitor = new NPaintVisitor(pdfG, 96, invertedCT, clip); // assign media // forward traverse the display tree visitor.BeginPainting(); VisitDisplaySubtree(visitor); visitor.EndPainting(); gh.SaveToFileAndDispose(fileName); System.Diagnostics.Process.Start(fileName); } catch (Exception x) { NMessageBox.Show(null, x.Message, "Exception", ENMessageBoxButtons.OK); } #endif }
/// <summary> /// Performs the element post-children custom paint. Overriden to paint the status /// of this example tile (if it has one) in its bottom-left corner. /// </summary> /// <param name="visitor"></param> protected override void OnPostPaint(NPaintVisitor visitor) { base.OnPostPaint(visitor); if (String.IsNullOrEmpty(m_Status)) { return; } // Paint a new label in the bottom left corner NRectangle bounds = GetContentEdge(); NFont font = new NFont(FontName, 5.0, ENFontStyle.Regular); font.RasterizationMode = ENFontRasterizationMode.Aliased; NSize textSize = font.MeasureString(m_Status, this.OwnerDocument); NRectangle textRect = new NRectangle(bounds.X - 1, bounds.Bottom - textSize.Height, textSize.Width + 3, textSize.Height); // Paint the text background NColor color = HomePage.GetStatusColor(m_Status); visitor.SetFill(color); visitor.PaintRectangle(textRect); // Paint the text visitor.SetFill(NColor.White); visitor.SetFont(font); NPoint location = textRect.Location; NPaintTextPointSettings settings = new NPaintTextPointSettings(); visitor.PaintString(location, m_Status, ref settings); }
public void Paint(NPaintVisitor visitor) { NColor color; switch (State) { case ENTouchDeviceState.Down: color = NColor.Blue; break; case ENTouchDeviceState.Unknown: color = NColor.Green; break; case ENTouchDeviceState.Up: color = NColor.Red; break; default: throw new Exception("New ENTouchDeviceState?"); } NSize size = Size; if (size.Width == 0 || size.Height == 0) { size = new NSize(5, 5); } visitor.SetStroke(new NStroke(color)); visitor.PaintEllipse(NRectangle.FromCenterAndSize(Location, size)); }
private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NPaintVisitor pv = args.PaintVisitor; pv.ClearStyles(); if (m_PaintImageInRectangle) { pv.PaintImage(NResources.Image_JpegSuite_q080_jpg.ImageSource, new NRectangle(m_PosX, m_PosY, m_Width, m_Height)); } else { pv.PaintImage(NResources.Image_JpegSuite_q080_jpg.ImageSource, new NPoint(m_PosX, m_PosY)); } // paint a border around the canvas pv.SetStroke(NColor.Black, 1); pv.PaintRectangle(0, 0, canvas.Width, canvas.Height); }
private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } // Create a transform matrix for the graphics path NMatrix matrix = NMatrix.CreateRotationMatrix(m_PathAngle * NAngle.Degree2Rad, NPoint.Zero); matrix.Translate(m_PathPositionX, m_PathPositionY); // Create a graphics path containing a rectangle and transform it NGraphicsPath path = new NGraphicsPath(); path.AddRectangle(0, 0, RectWidth, RectHeight); path.Transform(matrix); // Paint the graphics path NPaintVisitor pv = args.PaintVisitor; pv.SetStroke(m_Stroke); pv.SetFill(m_ImageFill); pv.PaintPath(path); // Paint a border around the canvas pv.ClearFill(); pv.SetStroke(NColor.Black, 1); pv.PaintRectangle(0, 0, canvas.Width, canvas.Height); }
void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NStroke stroke = (NStroke)canvas.Tag; NPaintVisitor visitor = args.PaintVisitor; visitor.SetStroke(stroke); visitor.SetFill(null); double strokeWidth = stroke.Width; double rectWidth = 300; double ellipseWidth = 150; double polylineWidth = 180; double dist = 20; double x1 = 10 + strokeWidth / 2; double x2 = x1 + rectWidth + dist + strokeWidth; double x3 = x2 + ellipseWidth; double x4 = x3 + dist + strokeWidth; double x5 = x4 + polylineWidth + dist + strokeWidth / 2; double y1 = 10 + strokeWidth / 2; double y2 = y1 + strokeWidth + 10; double y3 = y1 + 50; // draw a horizontal line visitor.PaintLine(x1, y1, x3, y1); // draw a rectangle visitor.PaintRectangle(x1, y2, rectWidth, 100); // draw an ellipse visitor.PaintEllipse(x2, y2, ellipseWidth, 100); // draw a polyline NPolyline polyLine = new NPolyline(4); polyLine.Add(new NPoint(x4, y2 + 90)); polyLine.Add(new NPoint(x4 + 60, y2)); polyLine.Add(new NPoint(x4 + 120, y2 + 90)); polyLine.Add(new NPoint(x4 + 180, y2)); visitor.PaintPolyline(polyLine); // draw text string dashStyleName = stroke.DashStyle.ToString(); visitor.ClearStroke(); visitor.SetFont(m_LabelFont); visitor.SetFill(m_LabelFill); NPaintTextRectSettings settings = new NPaintTextRectSettings(); visitor.PaintString(new NRectangle(x5, y3, 200, 50), dashStyleName, ref settings); }
void PaintTriangle(NPaintVisitor paintVisitor, double w, double h) { NPoint p1 = new NPoint(0.5 * w, 0.1 * h); NPoint p2 = new NPoint(0.9 * w, 0.9 * h); NPoint p3 = new NPoint(0.1 * w, 0.8 * h); paintVisitor.PaintTriangle(p1, p2, p3); }
void PaintQuadrangle(NPaintVisitor paintVisitor, double w, double h) { NPoint p1 = new NPoint(0.2 * w, 0.1 * h); NPoint p2 = new NPoint(0.6 * w, 0.1 * h); NPoint p3 = new NPoint(0.9 * w, 0.9 * h); NPoint p4 = new NPoint(0.1 * w, 0.6 * h); paintVisitor.PaintQuadrangle(p1, p2, p3, p4); }
void PaintTriangle(NPaintVisitor paintVisitor, double w, double h) { paintVisitor.SetStroke(NColor.Black, 2); paintVisitor.SetFill(NColor.Crimson); NPoint p1 = new NPoint(0.5 * w, 0.2 * h); NPoint p2 = new NPoint(0.8 * w, 0.8 * h); NPoint p3 = new NPoint(0.2 * w, 0.7 * h); paintVisitor.PaintTriangle(p1, p2, p3); }
void PaintPolyline(NPaintVisitor paintVisitor, double w, double h) { NPolyline polyline = new NPolyline(5); polyline.Add(0.1 * w, 0.1 * h); polyline.Add(0.4 * w, 0.2 * h); polyline.Add(0.2 * w, 0.5 * h); polyline.Add(0.3 * w, 0.8 * h); polyline.Add(0.9 * w, 0.9 * h); paintVisitor.PaintPolyline(polyline); }
private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NPaintVisitor pv = args.PaintVisitor; int count = m_Values.Length; // calculate total value double total = 0; for (int i = 0; i < count; i++) { total += m_Values[i]; } // paint the pie slices double beginAngle = 0; pv.ClearStyles(); for (int i = 0; i < count; i++) { double sweepAngle = NMath.PI2 * (m_Values[i] / total); NGraphicsPath path = new NGraphicsPath(); path.AddPie(0.1 * W, 0.1 * H, 0.8 * W, 0.8 * H, beginAngle, sweepAngle); if (i == 0) { const double detachment = 20; double midAngle = beginAngle + sweepAngle / 2; double dx = Math.Cos(midAngle) * detachment; double dy = Math.Sin(midAngle) * detachment; path.Translate(dx, dy); } pv.SetFill(m_ColorFills[i]); pv.PaintPath(path); beginAngle += sweepAngle; } // paint a border around the canvas pv.ClearFill(); pv.SetStroke(NColor.Black, 1); pv.PaintRectangle(0, 0, canvas.Width, canvas.Height); }
void PaintQuadrangle(NPaintVisitor paintVisitor, double w, double h) { paintVisitor.SetStroke(NColor.Black, 2); paintVisitor.SetFill(new NColor(NColor.Crimson, 128)); NPoint p1 = new NPoint(0.3 * w, 0.2 * h); NPoint p2 = new NPoint(0.6 * w, 0.2 * h); NPoint p3 = new NPoint(0.8 * w, 0.8 * h); NPoint p4 = new NPoint(0.2 * w, 0.6 * h); paintVisitor.PaintQuadrangle(p1, p2, p3, p4); }
void PaintPolyline(NPaintVisitor paintVisitor, double w, double h) { paintVisitor.SetStroke(NColor.Black, 2); NPolyline polyline = new NPolyline(5); polyline.Add(0.2 * w, 0.2 * h); polyline.Add(0.4 * w, 0.3 * h); polyline.Add(0.3 * w, 0.5 * h); polyline.Add(0.4 * w, 0.7 * h); polyline.Add(0.8 * w, 0.8 * h); paintVisitor.PaintPolyline(polyline); }
void PaintRectangle(NPaintVisitor paintVisitor, double w, double h) { NLinearGradientFill lgf = new NLinearGradientFill(); lgf.GradientStops.Add(new NGradientStop(0, NColor.Indigo)); lgf.GradientStops.Add(new NGradientStop(0.5f, NColor.SlateBlue)); lgf.GradientStops.Add(new NGradientStop(1, new NColor(NColor.Crimson, 30))); paintVisitor.SetStroke(NColor.Black, 1); paintVisitor.SetFill(lgf); paintVisitor.PaintRectangle(0.2 * w, 0.3 * h, 0.6 * w, 0.4 * h); }
void PaintPath(NPaintVisitor paintVisitor, double w, double h) { NGraphicsPath path = new NGraphicsPath(); path.StartFigure(0.1 * w, 0.1 * h); path.LineTo(0.7 * w, 0.2 * h); path.CubicBezierTo(0.9 * w, 0.9 * h, 1 * w, 0.4 * h, 0.5 * w, 0.7 * h); path.LineTo(0.2 * w, 0.8 * h); path.CubicBezierTo(0.1 * w, 0.1 * h, 0.3 * w, 0.7 * h, 0.4 * w, 0.6 * h); path.CloseFigure(); paintVisitor.PaintPath(path); }
void PaintPolygon(NPaintVisitor paintVisitor, double w, double h) { NPolygon polygon = new NPolygon(6); polygon.Add(0.3 * w, 0.1 * h); polygon.Add(0.7 * w, 0.1 * h); polygon.Add(0.5 * w, 0.4 * h); polygon.Add(0.9 * w, 0.9 * h); polygon.Add(0.2 * w, 0.8 * h); polygon.Add(0.1 * w, 0.4 * h); paintVisitor.PaintPolygon(polygon, ENFillRule.EvenOdd); }
void PaintEllipse(NPaintVisitor paintVisitor, double w, double h) { NRadialGradientFill rgf = new NRadialGradientFill(); rgf.GradientStops.Add(new NGradientStop(0, NColor.Indigo)); rgf.GradientStops.Add(new NGradientStop(0.6f, NColor.SlateBlue)); rgf.GradientStops.Add(new NGradientStop(1, new NColor(NColor.Crimson, 30))); paintVisitor.SetStroke(NColor.Black, 1); paintVisitor.SetFill(rgf); paintVisitor.PaintEllipse(0.2 * w, 0.3 * h, 0.6 * w, 0.4 * h); }
/// <summary> /// /// </summary> /// <param name="args"></param> private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NPaintVisitor paintVisitor = args.PaintVisitor; NRectangle contentEge = canvas.GetContentEdge(); // create the text bounds double width = contentEge.Width * m_WidthPercentUpDown.Value / 100.0; double height = contentEge.Height * m_HeightPercentUpDown.Value / 100.0; NPoint center = contentEge.Center; NRectangle textBounds = new NRectangle(center.X - width / 2.0, center.Y - height / 2.0, width, height); // create the settings NPaintTextRectSettings settings = new NPaintTextRectSettings(); settings.SingleLine = m_SingleLineCheckBox.Checked; settings.WrapMode = (ENTextWrapMode)m_WrapModeCombo.SelectedIndex; settings.HorzAlign = (ENTextHorzAlign)m_HorizontalAlignmentCombo.SelectedIndex; settings.VertAlign = (ENTextVertAlign)m_VerticalAlignmentCombo.SelectedIndex; // create the text StringBuilder builder = new StringBuilder(); builder.AppendLine("Paint text at bounds [" + textBounds.X.ToString("0.") + ", " + textBounds.Y.ToString("0.") + "]"); builder.AppendLine("Horizontal Alignment [" + settings.HorzAlign.ToString() + "]"); builder.AppendLine("Vertical Alignment [" + settings.VertAlign.ToString() + "]"); // paint the bounding box paintVisitor.ClearStyles(); paintVisitor.SetFill(NColor.LightBlue); paintVisitor.PaintRectangle(textBounds); // init font and fill paintVisitor.SetFill(NColor.Black); NFont font = new NFont(NFontDescriptor.DefaultSansFamilyName, 10); NGraphicsPath path = font.GetTextPath(builder.ToString(), textBounds, this.OwnerDocument, ref settings); paintVisitor.PaintPath(path); }
void PaintBase(NPaintVisitor pv) { if (m_ArmBasePath == null) { m_ArmBasePath = new NGraphicsPath(); m_ArmBasePath.StartFigure(0, 0); m_ArmBasePath.LineTo(-40, 0); m_ArmBasePath.LineTo(-40, 50); m_ArmBasePath.LineTo(25, 50); m_ArmBasePath.LineTo(25, 20); m_ArmBasePath.CloseFigure(); } pv.PaintPath(m_ArmBasePath); }
/// <summary> /// /// </summary> /// <param name="args"></param> private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NPaintVisitor paintVisitor = args.PaintVisitor; NRectangle contentEge = canvas.GetContentEdge(); // create the text bounds double width = contentEge.Width * 0.5; double height = contentEge.Height * 0.5; NPoint center = contentEge.Center; NRectangle textBounds = new NRectangle(center.X - width / 2.0, center.Y - height / 2.0, width, height); // create the settings NPaintTextRectSettings settings = new NPaintTextRectSettings(); settings.SingleLine = false; settings.WrapMode = ENTextWrapMode.WordWrap; settings.HorzAlign = ENTextHorzAlign.Center; settings.VertAlign = ENTextVertAlign.Center; // create the text StringBuilder builder = new StringBuilder(); builder.AppendLine("This text is displayed using Liberation Fonts!"); builder.AppendLine("distributed under the SIL Open Font License (OFL)"); // paint the bounding box paintVisitor.ClearStyles(); paintVisitor.SetFill(NColor.LightBlue); paintVisitor.PaintRectangle(textBounds); // init font and fill paintVisitor.SetFill(NColor.Black); ENFontStyle fontStyle = NFontFaceDescriptor.FontVariantToFontStyle(m_FontDescriptor.FontVariant); paintVisitor.SetFont(new NFont(m_FontDescriptor.FamilyName, 10, fontStyle)); // paint the text paintVisitor.PaintString(textBounds, builder.ToString(), ref settings); }
void PaintPath(NPaintVisitor paintVisitor, double w, double h) { paintVisitor.SetStroke(new NColor(0, 0, 0, 160), 6); paintVisitor.SetFill(new NColor(NColor.GreenYellow, 128)); NGraphicsPath path = new NGraphicsPath(); path.StartFigure(0.2 * w, 0.2 * h); path.LineTo(0.7 * w, 0.3 * h); path.CubicBezierTo(0.8 * w, 0.8 * h, 1 * w, 0.4 * h, 0.5 * w, 0.7 * h); path.LineTo(0.3 * w, 0.7 * h); path.CubicBezierTo(0.2 * w, 0.2 * h, 0.3 * w, 0.7 * h, 0.4 * w, 0.6 * h); path.CloseFigure(); paintVisitor.PaintPath(path); }
void PaintPolygon(NPaintVisitor paintVisitor, double w, double h) { paintVisitor.SetStroke(new NColor(0, 0, 0, 160), 6); paintVisitor.SetFill(NColor.GreenYellow); NPolygon polygon = new NPolygon(6); polygon.Add(0.3 * w, 0.2 * h); polygon.Add(0.6 * w, 0.2 * h); polygon.Add(0.5 * w, 0.4 * h); polygon.Add(0.8 * w, 0.8 * h); polygon.Add(0.3 * w, 0.7 * h); polygon.Add(0.2 * w, 0.4 * h); paintVisitor.PaintPolygon(polygon, ENFillRule.EvenOdd); }
/// <summary> /// /// </summary> /// <param name="args"></param> private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NPaintVisitor paintVisitor = args.PaintVisitor; NRectangle contentEge = canvas.GetContentEdge(); // create the settings NPaintTextRectSettings settings = new NPaintTextRectSettings(); settings.SingleLine = false; settings.WrapMode = ENTextWrapMode.WordWrap; settings.HorzAlign = ENTextHorzAlign.Left; settings.VertAlign = ENTextVertAlign.Top; // create the text string text = m_TextBox.Text; // calculate the text bounds the text bounds double resolution = canvas.OwnerDocument.GetEffectiveResolution(); NFont font = new NFont(NFontDescriptor.DefaultSansFamilyName, 10, ENFontStyle.Regular); NSize textSize = font.MeasureString(text.ToCharArray(), resolution, contentEge.Width, false, ref settings); NPoint center = contentEge.Center; NRectangle textBounds = new NRectangle( center.X - textSize.Width / 2.0, center.Y - textSize.Height / 2.0, textSize.Width, textSize.Height); // paint the bounding box paintVisitor.ClearStyles(); paintVisitor.SetFill(NColor.LightBlue); paintVisitor.PaintRectangle(textBounds); // init font and fill paintVisitor.SetFill(NColor.Black); paintVisitor.SetFont(font); // paint the text paintVisitor.PaintString(textBounds, text.ToCharArray(), ref settings); }
public override NMatrix Calibrate(NPaintVisitor visitor, double imgWidth, double imgHeight, NRectangle targetRect) { // Initialize the image transform NMatrix matrix = NMatrix.Identity; // Scale the image so that it fits 2 times in width and 3 times in height matrix.Scale( NCustomTextureMappingExample.RectWidth / (2.0 * imgWidth), NCustomTextureMappingExample.RectHeight / (3.0 * imgHeight)); // Rotate the image to the specified angle matrix.Rotate(m_TextureMapping.TextureAngle * NAngle.Degree2Rad); // Translate the image to the specfied pin point matrix.Translate(m_TextureMapping.PinPoint.X, m_TextureMapping.PinPoint.Y); return(matrix); }
/// <summary> /// /// </summary> /// <param name="args"></param> private void OnCanvasPrePaint(NCanvasPaintEventArgs args) { NCanvas canvas = args.TargetNode as NCanvas; if (canvas == null) { return; } NPaintVisitor paintVisitor = args.PaintVisitor; NPaintTextPointSettings settings = new NPaintTextPointSettings(); settings.SingleLine = m_SingleLineCheckBox.Checked; settings.VertAlign = (ENTextVertAlign)m_VerticalAlignmentCombo.SelectedItem.Tag; settings.HorzAlign = (ENTextHorzAlign)m_HorizontalAlignmentCombo.SelectedItem.Tag; NPoint location = canvas.GetContentEdge().Center; // set styles paintVisitor.ClearStyles(); paintVisitor.SetFont(new NFont(NFontDescriptor.DefaultSansFamilyName, 10)); paintVisitor.SetFill(NColor.Black); // create text to paint StringBuilder builder = new StringBuilder(); builder.AppendLine("Paint text at location [" + location.X.ToString("0.") + ", " + location.Y.ToString("0.") + "]"); builder.AppendLine("Horizontal Alignment [" + settings.HorzAlign.ToString() + "]"); builder.AppendLine("Vertical Alignment [" + settings.VertAlign.ToString() + "]"); // paint string paintVisitor.PaintString(location, builder.ToString(), ref settings); // paint location double inflate = 5.0; paintVisitor.SetFill(NColor.Red); paintVisitor.PaintRectangle(new NRectangle(location.X - inflate, location.Y - inflate, inflate * 2.0, inflate * 2.0)); }
private void OnPrintPage(NPrintDocument sender, NPrintPageEventArgs e) { NSize pageSizeDIP = new NSize(this.Width, this.Height); try { NMargins pageMargins = NMargins.Zero; NRegion clip = NRegion.FromRectangle(new NRectangle(0, 0, e.PrintableArea.Width, e.PrintableArea.Height)); NMatrix transform = new NMatrix(e.PrintableArea.X, e.PrintableArea.Y); NPaintVisitor visitor = new NPaintVisitor(e.Graphics, 300, transform, clip); // forward traverse the display tree this.OwnerWindow.VisitDisplaySubtree(visitor); e.HasMorePages = false; } catch (Exception x) { NMessageBox.Show(x.Message, "Exception", ENMessageBoxButtons.OK, ENMessageBoxIcon.Error); } }
/// <summary> /// Performs the element post-children custom paint. Overriden to paint the status /// of this category header's group (if it has one) in the top-right corner of the header. /// </summary> /// <param name="visitor"></param> protected override void OnPostPaint(NPaintVisitor visitor) { base.OnPostPaint(visitor); if (String.IsNullOrEmpty(m_Status)) { return; } // Determine the text bounds NRectangle bounds = GetContentEdge(); NSize textSize = Font.MeasureString(((NLabel)Box2).Text); NRectangle textBounds = NRectangle.FromCenterAndSize(bounds.Center, textSize.Width, textSize.Height); textBounds.X += Box1.Width / 2; // Calculate a rectangle for the status text located to the right of the text rectangle textSize = StatusFont.MeasureString(m_Status, OwnerDocument); NRectangle textRect = new NRectangle(textBounds.Right + StatusLeftPadding, textBounds.Top, textSize.Width + StatusRightPadding, textSize.Height); // Paint the text background NExamplesHomePage homePage = (NExamplesHomePage)GetFirstAncestor(NExamplesHomePage.NExamplesHomePageSchema); NColor color = homePage.GetStatusColor(m_Status); visitor.SetFill(color); visitor.PaintRectangle(textRect); // Paint the text visitor.SetFill(NColor.White); visitor.SetFont(StatusFont); NPoint location = textRect.Location; NPaintTextPointSettings settings = new NPaintTextPointSettings(); visitor.PaintString(location, m_Status, ref settings); }