public static PlanElement FromPolygonSimple(ElementBasePolygon item, bool mouseOver) { var showHint = true; if (HasProperty(item, "ShowTooltip")) { showHint = (bool)GetProperty(item, "ShowTooltip"); } Guid zoneUID = Guid.Empty; if (HasProperty(item, "ZoneUID")) { zoneUID = (Guid)GetProperty(item, "ZoneUID"); } var shape = new PlanElement { Path = InternalConverter.PointsToPath(item.Points.ToWindowsPointCollection(), PathKind.ClosedLine), Border = InternalConverter.ConvertColor(item.BorderColor.ToWindowsColor()), BorderMouseOver = InternalConverter.ConvertColor(Colors.Orange), Name = item.PresentationName, Id = zoneUID == Guid.Empty ? "pe" + item.UID : "pe" + zoneUID, GkObject = GetGkObject(item), BorderThickness = item.BorderThickness, Hint = showHint ? GetElementHint(item) : null, Type = ShapeTypes.Path.ToString(), HasOverlay = mouseOver }; var asZone = item as IElementZone; if (asZone == null) return shape; var zone = GKManager.Zones.FirstOrDefault(z => z.UID == asZone.ZoneUID); if (zone != null) { var converter = new XStateClassToColorConverter2(); var background = ((SolidColorBrush)converter.Convert(zone.State.StateClass, typeof(SolidColorBrush), null, CultureInfo.InvariantCulture)).Color; shape.Fill = InternalConverter.ConvertColor(background); return shape; } var zoneSkd = GKManager.SKDZones.FirstOrDefault(z => z.UID == asZone.ZoneUID); if (zoneSkd != null) { var converter = new XStateClassToColorConverter2(); var background = ((SolidColorBrush)converter.Convert(zoneSkd.State.StateClass, typeof(SolidColorBrush), null, CultureInfo.InvariantCulture)).Color; shape.Fill = InternalConverter.ConvertColor(background); return shape; } var zoneSec = GKManager.GuardZones.FirstOrDefault(z => z.UID == asZone.ZoneUID); if (zoneSec != null) { var converter = new XStateClassToColorConverter2(); var background = ((SolidColorBrush)converter.Convert(zoneSec.State.StateClass, typeof(SolidColorBrush), null, CultureInfo.InvariantCulture)).Color; shape.Fill = InternalConverter.ConvertColor(background); } return shape; }
public static PlanElement FromPolygon(ElementBasePolygon elem) { var rect = GetRectangle(elem.Points); var showState = false; if (HasProperty(elem, "ShowState")) { showState = (bool)GetProperty(elem, "ShowState"); } if (elem is ElementPolygonGKMPT) { showState = true; } if (!showState) { return FromPolygonSimple(elem, !(elem is ElementPolygon)); } Guid zoneUID = Guid.Empty; if (HasProperty(elem, "ZoneUID")) { zoneUID = (Guid)GetProperty(elem, "ZoneUID"); } // Получаем прямоугольник, в который вписан текст // Получаем элемент текста 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 = rect.Height, Width = rect.Width }; var planElementText = FromTextElement( textElement, new System.Windows.Size(rect.Width, rect.Height), rect.Left, rect.Top, false); // Получаем элемент прямоугольника, в который вписан текст var planElementRect = FromPolygonSimple(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(), Width = rect.Width, Height = rect.Height, HasOverlay = true, BorderMouseOver = InternalConverter.ConvertColor(Colors.Orange), X = rect.Left, Y = rect.Top, Name = elem.PresentationName }; return planElement; }