/// <summary> /// Initializes a new instance of the <see cref="RoomVisual"/> class. /// </summary> /// <param name="zoneVisual">The zone visual.</param> public RoomVisual([NotNull] ZoneVisual zoneVisual) { _zoneVisual = zoneVisual; Assert.ArgumentNotNull(zoneVisual, "zoneVisual"); _rootDrawing = new DrawingVisual(); _childVisuals.Add(_rootDrawing); var dc = _rootDrawing.RenderOpen(); _roomDrawing = new GeometryDrawing(zoneVisual.RenderConstants.GetRoomColorBrush(RoomColor.Default), _zoneVisual.RenderConstants.DefaultRoomPen, _zoneVisual.RenderConstants.RoomGeometry); dc.DrawDrawing(_roomDrawing); _northExitDrawing = new GeometryDrawing(_zoneVisual.RenderConstants.DefaultExitBrush, null, _zoneVisual.RenderConstants.NorthExitGeometry.Clone()) { Geometry = { Transform = new ScaleTransform(1, 1, 1, 5) } }; dc.DrawDrawing(_northExitDrawing); _southExitDrawing = new GeometryDrawing(_zoneVisual.RenderConstants.DefaultExitBrush, null, _zoneVisual.RenderConstants.SouthExitGeometry.Clone()) { Geometry = { Transform = new ScaleTransform(1, 1, 1, 25) } }; dc.DrawDrawing(_southExitDrawing); _westExitDrawing = new GeometryDrawing(_zoneVisual.RenderConstants.DefaultExitBrush, null, _zoneVisual.RenderConstants.WestExitGeometry.Clone()) { Geometry = { Transform = new ScaleTransform(1, 1, 5, 1) } }; dc.DrawDrawing(_westExitDrawing); _eastExitDrawing = new GeometryDrawing(_zoneVisual.RenderConstants.DefaultExitBrush, null, _zoneVisual.RenderConstants.EastExitGeometry.Clone()) { Geometry = { Transform = new ScaleTransform(1, 1, 25, 1) } }; dc.DrawDrawing(_eastExitDrawing); _upExitDrawing = new GeometryDrawing(_zoneVisual.RenderConstants.DefaultExitBrush, null, _zoneVisual.RenderConstants.UpExitGeometry); dc.DrawDrawing(_upExitDrawing); _downExitDrawing = new GeometryDrawing(_zoneVisual.RenderConstants.DefaultExitBrush, null, _zoneVisual.RenderConstants.DownExitGeometry); dc.DrawDrawing(_downExitDrawing); _iconDrawing = new GeometryDrawing(zoneVisual.RenderConstants.GetRoomIconBrush(RoomIcon.None), new Pen(Brushes.Transparent, 0), new RectangleGeometry(new Rect(5, 5, 20, 20))); dc.DrawDrawing(_iconDrawing); dc.Close(); _transform = new TranslateTransform(-10000, -10000); _rootDrawing.Transform = _transform; }
/// <summary> /// Initializes a new instance of the <see cref="RenderConstants"/> class. /// </summary> /// <param name="zoneVisual">The zone visual.</param> public RenderConstants([NotNull] ZoneVisual zoneVisual) { _zoneVisual = zoneVisual; Assert.ArgumentNotNull(zoneVisual, "zoneVisual"); RoomGeometry = new RectangleGeometry(new Rect(5, 5, 20, 20), 2, 2); RoomGeometry.Freeze(); NorthExitGeometry = new RectangleGeometry(new Rect(14, 0, 2, 5)); NorthExitGeometry.Freeze(); SouthExitGeometry = new RectangleGeometry(new Rect(14, 25, 2, 5)); SouthExitGeometry.Freeze(); WestExitGeometry = new RectangleGeometry(new Rect(0, 14, 5, 2)); WestExitGeometry.Freeze(); EastExitGeometry = new RectangleGeometry(new Rect(25, 14, 5, 2)); EastExitGeometry.Freeze(); UpExitGeometry = Geometry.Parse("M5.1790161,5.1693864 L1,5.208189 L1,7.2087359 L5.1790161,7.1703711 z M5.1790161,2.1503892 L1,2.1891921 L1,4.2297473 L5.1790161,4.1913824 z M5.6591058,6.686151E-05 C5.8254476,-0.0017583817 5.9984264,0.033741869 6.1790161,0.11204322 L6.1790161,8.4298897 C5.7820988,8.6196117 5.4618106,8.5806875 5.1790161,8.4298897 L5.1790161,8.1483746 L1,8.1871777 L1,8.4372969 C0.71720558,8.5864563 0.39691716,8.6249571 0,8.4372969 L0,0.20984003 C0.18058951,0.13238949 0.35356849,0.097275011 0.51991057,0.099080339 C0.68625271,0.10088577 0.84595799,0.13961101 1,0.20984003 L1,1.2107502 L5.1790161,1.1723855 L5.1790161,0.11204322 C5.3330584,0.041042738 5.4927635,0.0018920451 5.6591058,6.686151E-05 z"); UpExitGeometry.Freeze(); DownExitGeometry = Geometry.Parse("M0.99999994,4.9353776 L0.99999994,7.2073736 L5.1790161,7.2457385 L5.1790161,4.9741802 z M0.99999994,1.4983659 L0.99999994,3.9573739 L5.1790161,3.9957387 L5.1790161,1.5371687 z M0.51991075,7.9870224E-05 C0.68625271,0.002260685 0.84595793,0.049042225 0.99999994,0.13388109 L0.99999994,0.52036214 L5.1790161,0.55872703 L5.1790161,0.27224088 C5.4871001,0.10589814 5.8178372,0.088793516 6.1790161,0.27224088 L6.1790161,10.015921 C5.7820988,10.238165 5.4618106,10.192569 5.1790161,10.015921 L5.1790161,8.2241802 L0.99999994,8.1853771 L0.99999994,10.072922 C0.71720552,10.253111 0.3969171,10.299622 0,10.072922 L0,0.13388109 C0.18058944,0.040318251 0.35356843,-0.0021011829 0.51991075,7.9870224E-05 z"); DownExitGeometry = DownExitGeometry.Clone(); DownExitGeometry.Transform = new TranslateTransform(0, 19); DownExitGeometry.Freeze(); NonVisitedRoomBrush = new SolidColorBrush(Color.FromRgb(0x5E, 0x5E, 0x5E)); NonVisitedRoomBrush.Freeze(); CurrentRoomPen = new Pen(Brushes.White, 2); CurrentRoomPen.Freeze(); DefaultRoomPen = new Pen(Brushes.White, 0); DefaultRoomPen.Freeze(); SelectedRoomPen = new Pen(Brushes.Red, 2); SelectedRoomPen.Freeze(); DefaultExitBrush = new SolidColorBrush(Color.FromRgb(0x55, 0x69, 0x74)); DefaultExitBrush.Freeze(); CurrentRoomExitBrush = new SolidColorBrush(Colors.White); CurrentRoomExitBrush.Freeze(); InvisibleExitBrush = new SolidColorBrush(Colors.Transparent); InvisibleExitBrush.Freeze(); }