public ConveyorCornerShape(ConveyorCorner element) { InitializeComponent(); if (element.speed == 2) this.Arrow.Fill = FastBrush; this.RenderTransformOrigin = new Point(0.5, 0.5); var transform = new TransformGroup(); transform.Children.Add(new RotateTransform(DirectionToAngle(element))); if ((element.direcdtionIn == Direction.Right && element.direcdtionOut == Direction.Up) || (element.direcdtionIn == Direction.Left && element.direcdtionOut == Direction.Down)) { transform.Children.Add(new ScaleTransform(-1, -1)); var arrowRotate = Arrow.RenderTransform; var groupTransform = new TransformGroup(); groupTransform.Children.Add(arrowRotate); groupTransform.Children.Add(new ScaleTransform(-1, -1)); Arrow.RenderTransform = groupTransform; this.Arrow.Fill = new SolidColorBrush(Colors.LightGreen); } if (element.direcdtionOut != Direction.Up && element.direcdtionIn > element.direcdtionOut) { //transform.Children.Add(new ScaleTransform(-1, -1)); this.Arrow.Fill = new SolidColorBrush(Colors.Purple); } this.RenderTransform = transform; }
double DirectionToAngle(ConveyorCorner element) { switch (element.direcdtionIn) { case Direction.Up: return 0; case Direction.Right: return 90; case Direction.Down: return 180; case Direction.Left: return 270; default: return 0; } }
void AddConveyorCorner(int x, int y, Direction directionIn, Direction directionOut, int speed) { var conveyor = new ConveyorCorner(); conveyor.position = new Position(x, y); conveyor.direcdtionIn = directionIn; conveyor.direcdtionOut = directionOut; conveyor.speed = speed; boardElements.Add(conveyor); }