protected virtual void MoveTextBelowShape(NShape shape) { NTextBlock textBlock = shape.GetTextBlock(); textBlock.Padding = new NMargins(0, 5, 0, 0); textBlock.ResizeMode = ENTextBlockResizeMode.TextSize; textBlock.SetFx(NTextBlock.PinYProperty, new NShapeHeightFactorFx(1.0)); textBlock.LocPinY = 0; }
protected override void MoveTextBelowShape(NShape shape) { if (shape.ShapeType == ENShapeType.Shape2D) { base.MoveTextBelowShape(shape); return; } // if the shape is 1D put the text block on the left part of the shape and rotate it on 90 degrees. NTextBlock textBlock = shape.GetTextBlock(); textBlock.Padding = new NMargins(5, 0, 0, 0); textBlock.ResizeMode = ENTextBlockResizeMode.TextSize; textBlock.PinX = shape.BeginX; textBlock.SetFx(NTextBlock.PinYProperty, new NShapeHeightFactorFx(0)); textBlock.LocPinY = 0; textBlock.Angle = new NAngle(90); }
protected override void InitDiagram() { base.InitDiagram(); NDrawing drawing = m_DrawingDocument.Content; NPage activePage = drawing.ActivePage; // Hide the grid and the ports drawing.ScreenVisibility.ShowGrid = false; drawing.ScreenVisibility.ShowPorts = false; // Create a shape factory NBasicShapeFactory basicShapeFactory = new NBasicShapeFactory(); basicShapeFactory.DefaultSize = new NSize(100, 100); // Create the Name shape NShape nameShape = basicShapeFactory.CreateShape(ENBasicShape.Rectangle); nameShape.Width = 150; nameShape.PinX = activePage.Width / 2; nameShape.PinY = 100; NParagraph paragraph = new NParagraph(); paragraph.Inlines.Add(new NFieldInline(new NMailMergePredefinedFieldValue(ENMailMergeDataField.FirstName))); paragraph.Inlines.Add(new NTextInline(" ")); paragraph.Inlines.Add(new NFieldInline(new NMailMergePredefinedFieldValue(ENMailMergeDataField.LastName))); nameShape.GetTextBlock().Content.Blocks.Clear(); nameShape.GetTextBlock().Content.Blocks.Add(paragraph); activePage.Items.Add(nameShape); // Create the City shape NShape cityShape = basicShapeFactory.CreateShape(ENBasicShape.SixPointStar); cityShape.PinX = nameShape.PinX - 150; cityShape.PinY = nameShape.PinY + 200; paragraph = new NParagraph(); paragraph.Inlines.Add(new NFieldInline(new NMailMergePredefinedFieldValue(ENMailMergeDataField.City))); cityShape.GetTextBlock().Content.Blocks.Clear(); cityShape.GetTextBlock().Content.Blocks.Add(paragraph); activePage.Items.Add(cityShape); // Create the Birth Date shape NShape birthDateShape = basicShapeFactory.CreateShape(ENBasicShape.Circle); birthDateShape.PinX = nameShape.PinX + 150; birthDateShape.PinY = cityShape.PinY; paragraph = new NParagraph(); paragraph.Inlines.Add(new NFieldInline(new NMailMergeSourceFieldValue("BirthDate"))); birthDateShape.GetTextBlock().Content.Blocks.Clear(); birthDateShape.GetTextBlock().Content.Blocks.Add(paragraph); activePage.Items.Add(birthDateShape); // Connect the shapes NRoutableConnector connector = new NRoutableConnector(); connector.Text = "City"; connector.TextBlock.BackgroundFill = new NColorFill(NColor.White); connector.GlueBeginToNearestPort(nameShape); connector.GlueEndToNearestPort(cityShape); activePage.Items.Add(connector); connector = new NRoutableConnector(); connector.Text = "Birth Date"; connector.TextBlock.BackgroundFill = new NColorFill(NColor.White); connector.GlueBeginToNearestPort(nameShape); connector.GlueEndToNearestPort(birthDateShape); activePage.Items.Add(connector); // Load a mail merge data source from resource Stream stream = NResources.Instance.GetResourceStream("RSTR_Employees_csv"); NMailMergeDataSource dataSource = NDataSourceFormat.Csv.LoadFromStream(stream, new NDataSourceLoadSettings(null, null, true)); // Set some field mappings NMailMergeFieldMap fieldMap = new NMailMergeFieldMap(); fieldMap.Set(ENMailMergeDataField.CourtesyTitle, "TitleOfCourtesy"); fieldMap.Set(ENMailMergeDataField.FirstName, "FirstName"); fieldMap.Set(ENMailMergeDataField.LastName, "LastName"); fieldMap.Set(ENMailMergeDataField.City, "City"); // Configure the drawing's mail merge drawing.MailMerge.DataSource = dataSource; }