public NamedArrowCursorControl() { this.Container = new Canvas(); this.Cursor = new ArrowCursorControl().AttachContainerTo(this.Container); var ShadowCointainer = new Canvas().AttachTo(this.Container); Func<int, Action> CreateShadow = ShadowLength => Enumerable.Range(2, ShadowLength).ToOrphanizeAction( (c, i) => new Rectangle { Fill = Brushes.Black, Width = 3, Opacity = 1.0 - (double)i / (double)ShadowLength, Height = 18 } .AttachTo(ShadowCointainer) .MoveTo(12 + i * 3, 24) ); //this.CreateShadow = CreateShadow.ToContinuation((string t) => 10 + t.Length); this.CreateShadow = t => { }; this.LabelShadow = new TextBox { IsReadOnly = true, Background = Brushes.Transparent, BorderThickness = new Thickness(0), Foreground = Brushes.Black, Width = 400, Height = 18, TextAlignment = TextAlignment.Left, FontFamily = new FontFamily("Verdana") }.AttachTo(Container).MoveTo(12 + 1, 24 + 1); this.Label = new TextBox { IsReadOnly = true, Background = Brushes.Transparent, BorderThickness = new Thickness(0), Foreground = Brushes.White, Width = 400, Height = 18, TextAlignment = TextAlignment.Left, FontFamily = new FontFamily("Verdana") }.AttachTo(Container).MoveTo(12, 24); }
public DynamicCursorCanvas() { Width = DefaultWidth; Height = DefaultHeight; var g = Colors.Yellow.ToGradient(Colors.Red, DefaultHeight).ToArray(); g.Select( (c, i) => new Rectangle { Fill = new SolidColorBrush(c), Width = DefaultWidth, Height = 2, }.MoveTo(0, i).AttachTo(this) ).ToArray(); var cur = new ArrowCursorControl(); cur.Cyan.Opacity = 0; cur.Magenta.Opacity = 0; cur.Yellow.Opacity = 0; new Rectangle { Fill = Brushes.Red, Width = 32, Height = 32 }.MoveTo(32, 32).AttachTo(this); new Rectangle { Fill = Brushes.Green, Width = 32, Height = 32 }.MoveTo(32 * 2, 32).AttachTo(this); new Rectangle { Fill = Brushes.Blue, Width = 32, Height = 32 }.MoveTo(32 * 3, 32).AttachTo(this); cur.Container.AttachTo(this).MoveTo(64, 64); var Overlay = new Rectangle { Fill = Brushes.White, Width = DefaultWidth, Height = DefaultHeight, Opacity = 0 }.AttachTo(this); var Overlay_Red = new Rectangle { Fill = Brushes.Red, Width = 32, Height = 32, Opacity = 0 }.MoveTo(32, 32).AttachTo(this); var Overlay_Green = new Rectangle { Fill = Brushes.Green, Width = 32, Height = 32, Opacity = 0 }.MoveTo(32 * 2, 32).AttachTo(this); var Overlay_Blue = new Rectangle { Fill = Brushes.Blue, Width = 32, Height = 32, Opacity = 0 }.MoveTo(32 * 3, 32).AttachTo(this); var Overlay_Y = new Rectangle { Fill = Brushes.Blue, Width = 32, Height = DefaultHeight, Opacity = 0 }.AttachTo(this); Overlay_Y.MouseMove += (sender, e) => { var p = e.GetPosition(this); cur.Color = g[Convert.ToInt32(p.Y)]; }; this.Cursor = Cursors.None; Overlay_Red.MouseEnter += delegate { // http://acept.asu.edu/PiN/rdg/color/composition.shtml cur.Color = Colors.Red; }; Overlay_Green.MouseEnter += delegate { // http://acept.asu.edu/PiN/rdg/color/composition.shtml cur.Color = Colors.Green; }; Overlay_Blue.MouseEnter += delegate { // http://acept.asu.edu/PiN/rdg/color/composition.shtml cur.Color = Colors.Blue; }; this.MouseMove += (sender, e) => { var p = e.GetPosition(this); cur.Container.MoveTo(p.X, p.Y); }; }
public NumericTransmitterCanvas() { Width = DefaultWidth; Height = DefaultHeight; Colors.Blue.ToGradient(Colors.Red, DefaultHeight / 4).Select( (c, i) => new Rectangle { Fill = new SolidColorBrush(c), Width = DefaultWidth, Height = 4, }.MoveTo(0, i * 4).AttachTo(this) ).ToArray(); var c1 = new ArrowCursorControl { }; c1.Red.Opacity = 0.8; c1.Container.AttachTo(this); var c2 = new ArrowCursorControl { }; c2.Yellow.Opacity = 0.8; c2.Container.AttachTo(this); var c3 = new ArrowCursorControl { }; c3.Green.Opacity = 0.8; c3.Container.AttachTo(this); var Overlay = new Rectangle { Fill = Brushes.White, Width = DefaultWidth, Height = DefaultHeight, Opacity = 0, Cursor = Cursors.None }.AttachTo(this); Action<int, int> Emitter = NumericEmitter.Of( (x, y) => c3.Container.MoveTo(x, y) ); Action<int, int> Omitter = NumericOmitter.Of( (x, y) => { c2.Container.MoveTo(x, y); Emitter(x, y); } ); Overlay.MouseMove += (sender, e) => { var p = e.GetPosition(this); c1.Container.MoveTo(p.X, p.Y); //1000.AtDelay( // delegate // { // c2.Container.MoveTo(p.X, p.Y); // } //); 300.AtDelay( () => Omitter(Convert.ToInt32(p.X), Convert.ToInt32(p.Y)) ); }; }
public TileFieldTest() { this.Width = DefaultWidth; this.Height = DefaultHeight; new[] { Colors.White, Colors.Blue, Colors.Red, Colors.Yellow }.ToGradient(DefaultHeight / 4).ForEach( (c, i) => new Rectangle { Fill = new SolidColorBrush(c), Width = DefaultWidth, Height = 5, }.MoveTo(0, i * 4).AttachTo(this) ); var t = new TextBox { AcceptsReturn = true, Background = Brushes.White, BorderThickness = new Thickness(0), Text = "hello world" + Environment.NewLine, Width = DefaultWidth / 2, Height = DefaultHeight / 4 }.AttachTo(this).MoveTo(DefaultWidth / 4, 4); var OverlayCanvas = new Canvas { Width = DefaultWidth, Height = DefaultHeight }; var OverlayRectangle = new Rectangle { Width = DefaultWidth, Height = DefaultHeight, Fill = Brushes.Black, Opacity = 0 }.AttachTo(OverlayCanvas); var field = new TileField(8, 6); var field_x = 64; var field_y = 200; field.Container.MoveTo(field_x, field_y).AttachTo(this); field.Overlay.MoveTo(field_x, field_y).AttachTo(OverlayCanvas); var WaterFlow = new Queue<Action>(); #region pipes { var pipe = new Pipe.PumpToLeft(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 5, field_y + Tile.ShadowBorder + 52 * 0 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } Enumerable.Range(0, 2).ForEach( ix_ => { var ix = 4 - ix_; var pipe = new Pipe.LeftToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * ix, field_y + Tile.ShadowBorder + 52 * 0 - 12).AttachTo(this); pipe.Water.ForEachReversed( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } ); { var pipe = new Pipe.RightToBottom(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 2, field_y + Tile.ShadowBorder + 52 * 0 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } Enumerable.Range(1, 2).ForEach( iy => { var pipe = new Pipe.TopToBottom(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 2, field_y + Tile.ShadowBorder + 52 * iy - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } ); { var pipe = new Pipe.TopToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 2, field_y + Tile.ShadowBorder + 52 * 3 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } Enumerable.Range(3, 3).ForEach( ix => { var pipe = new Pipe.LeftToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * ix, field_y + Tile.ShadowBorder + 52 * 3 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } ); field[3, 2].Drain.Visibility = Visibility.Visible; { var pipe = new Pipe.LeftToDrain(); field[6, 3].Drain.Visibility = Visibility.Visible; pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 6, field_y + Tile.ShadowBorder + 52 * 3 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } { var pipe = new Pipe.PumpToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 0, field_y + Tile.ShadowBorder + 52 * 1 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } { var pipe = new Pipe.LeftToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 1, field_y + Tile.ShadowBorder + 52 * 1 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } { var pipe = new Pipe.LeftToRightBent(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 2, field_y + Tile.ShadowBorder + 52 * 1 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } Enumerable.Range(3, 4).ForEach( ix => { var pipe = new Pipe.LeftToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * ix, field_y + Tile.ShadowBorder + 52 * 1 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } ); { var pipe = new Pipe.LeftToBottom(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 7, field_y + Tile.ShadowBorder + 52 * 1 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } Enumerable.Range(2, 2).ForEach( iy => { var pipe = new Pipe.TopToBottom(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 7, field_y + Tile.ShadowBorder + 52 * iy - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } ); { var pipe = new Pipe.TopToLeft(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 7, field_y + Tile.ShadowBorder + 52 * 4 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } Enumerable.Range(0, 3).ForEach( ix_ => { var ix = 6 - ix_; var pipe = new Pipe.LeftToRight(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * ix, field_y + Tile.ShadowBorder + 52 * 4 - 12).AttachTo(this); pipe.Water.ForEachReversed( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } ); { var pipe = new Pipe.RightToDrain(); pipe.Container.MoveTo(field_x + Tile.ShadowBorder + Tile.Size * 3, field_y + Tile.ShadowBorder + 52 * 4 - 12).AttachTo(this); pipe.Water.ForEach( i => WaterFlow.Enqueue(() => i.Visibility = Visibility.Visible) ); } #endregion field[3, 4].Drain.Visibility = Visibility.Visible; OverlayCanvas.AttachTo(this).MoveTo(0, 0); var Navigationbar = new AeroNavigationBar(); Navigationbar.Container.MoveTo(4, 4).AttachTo(this); var c1 = new ArrowCursorControl { }; c1.Container.MoveTo(32, 32).AttachTo(this); c1.Red.Opacity = 0.7; OverlayCanvas.MouseMove += (sender, e) => { var p = e.GetPosition(OverlayCanvas); c1.Container.MoveTo(32 + p.X, 32 + p.Y); }; OverlayCanvas.MouseLeave += delegate { c1.Container.Visibility = Visibility.Hidden; }; OverlayCanvas.MouseEnter += delegate { c1.Container.Visibility = Visibility.Visible; }; foreach (var n in KnownAssets.Default.FileNames) { t.AppendTextLine(n); } 3000.AtDelay( delegate { (1000 / 10).AtIntervalWithTimer( ttt => { if (WaterFlow.Count == 0) { ttt.Stop(); return; } WaterFlow.Dequeue()(); } ); } ); }