Exemple #1
0
		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;
		}
Exemple #2
0
		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;
		}