internal static void Run() { var ev = new ManualResetEvent(false); Console.WriteLine("Merge X and Y"); using (Xs.Merge(Ys).Subscribe( z => Console.Write("{0} ", z), () => ev.Set())) { ev.WaitOne(); } Console.WriteLine(); ev.Reset(); Console.WriteLine("Zip X, Y -> X + Y"); using (Xs.Zip(Ys, (x, y) => x + y) .Subscribe( z => Console.Write("{0} ", z), () => ev.Set())) { ev.WaitOne(); } Console.WriteLine(); ev.Reset(); Console.WriteLine("Combine X, Y -> X + Y"); using (Xs.CombineLatest(Ys, (x, y) => x + y) .Subscribe( z => Console.Write("{0} ", z), () => ev.Set())) { ev.WaitOne(); } Console.WriteLine(); ev.Reset(); Console.WriteLine("Concat X and Y"); using (Xs.Concat(Ys) .Subscribe( z => Console.Write("{0} ", z), () => ev.Set())) { ev.WaitOne(); } Console.WriteLine(); ev.Reset(); }
internal void Draw(Graphics g, int width, SizeF offsets) { var pen = new Pen(Color, width); var clip = g.VisibleClipBounds; var xReal = (XMax - XMin) / clip.Width; var yReal = (YMax - YMin) / clip.Height; var points = Xs.Zip(Ys, (x, y) => new PointF( // clip.X -- отступ для оси ординат (x - XMin) / xReal + clip.X, (YMax - y) / yReal )); g.DrawCurve(pen, points.ToArray <PointF>()); }