public static PlanElement FromRectangle(ElementBaseRectangle elem) { if (elem is ElementEllipse) { return null; } var showState = false; if (HasProperty(elem, "ShowState")) { showState = (bool)GetProperty(elem, "ShowState"); } if (elem is ElementRectangleGKMPT) { showState = true; } Guid zoneUID = Guid.Empty; if (HasProperty(elem, "ZoneUID")) { zoneUID = (Guid)GetProperty(elem, "ZoneUID"); } if (!showState) { if (elem is ElementRectangle) { return FromRectangleSimple(elem, false); } return FromRectangleSimple(elem, true); } // Получаем прямоугольник, в который вписан текст // Получаем элемент текста var textElement = new ElementTextBlock { FontBold = true, FontFamilyName = "Arial", FontItalic = true, Text = "Неизвестно", FontSize = 18, ForegroundColor = RubezhAPI.Colors.Black, WordWrap = false, BorderThickness = 1, Stretch = true, TextAlignment = 1, VerticalAlignment = 1, PresentationName = elem.PresentationName, UID = zoneUID == Guid.Empty ? elem.UID : zoneUID, Height = elem.Height, Width = elem.Width }; var planElementText = FromTextElement( textElement, new System.Windows.Size(elem.Width, elem.Height), elem.Left, elem.Top, false); // Получаем элемент прямоугольника, в который вписан текст var planElementRect = FromRectangleSimple(elem, false); // Очищаем элементы от групповой информации planElementText.Hint = null; planElementText.HasOverlay = false; planElementText.Id = Guid.Empty.ToString(); planElementRect.Hint = null; planElementRect.HasOverlay = false; planElementRect.Id = Guid.Empty.ToString(); // Задаем групповой элемент var planElement = new PlanElement { ChildElements = new[] { planElementRect, planElementText }, Id = zoneUID == Guid.Empty ? "pe" + elem.UID : "pe" + zoneUID, Hint = GetElementHint(elem), GkObject = GetGkObject(elem), Type = ShapeTypes.Group.ToString(), Name = elem.PresentationName, Width = elem.Width, Height = elem.Height, HasOverlay = true, BorderMouseOver = InternalConverter.ConvertColor(Colors.Orange), X = elem.Left, Y = elem.Top }; return planElement; }
protected override ElementBaseRectangle CreateElement(double left, double top) { var element = new ElementTextBlock() { Left = left, Top = top }; var propertiesViewModel = new TextBlockPropertiesViewModel(element, DesignerCanvas); return DialogService.ShowModalWindow(propertiesViewModel) ? element : null; }
/// <summary> /// Создает SVG-группу из ElementTextBlock /// </summary> /// <param name="elem">ElementTextBlock</param> /// <returns>групповой PlanElement</returns> public static PlanElement FromTextBlock(ElementTextBlock elem) { // Получаем прямоугольник, в который вписан текст // Получаем элемент текста var planElementText = FromTextElement( elem, new System.Windows.Size(elem.Width, elem.Height), elem.Left, elem.Top, elem.ShowTooltip); // Получаем элемент прямоугольника, в который вписан текст var planElementRect = FromRectangleSimple(elem, false); // Очищаем элементы от групповой информации planElementText.Hint = null; planElementText.HasOverlay = false; planElementText.Id = Guid.Empty.ToString(); planElementRect.Hint = null; planElementRect.HasOverlay = false; planElementRect.Id = Guid.Empty.ToString(); // Задаем групповой элемент var planElement = new PlanElement { ChildElements = new[] { planElementRect, planElementText }, Id = planElementText.Id, Hint = GetElementHint(elem), Type = ShapeTypes.Group.ToString(), Width = elem.Width, Height = elem.Height, HasOverlay = false, X = elem.Left, Y = elem.Top }; return planElement; }