示例#1
0
        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();
        }
示例#2
0
        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>());
        }