示例#1
0
        void Draw_Graph(Rectangle area, Gdk.Window window, double y_grid, double y_max, bool grid, IEnumerable <double> data, Gdk.GC gc)
        {
            int y_intervals = (int)Math.Ceiling(y_max / y_grid);

            double offset_x = area.Left;
            double offset_y = area.Bottom;
            double scale_x  = area.Width / (double)(data.Count() + 1);
            double scale_y  = -area.Height / (y_grid * y_intervals);

            if (grid)
            {
                for (int i = 0; i <= y_intervals; i++)
                {
                    int y = (int)Math.Round(offset_y + scale_y * y_grid * i);
                    window.DrawLine(drawingArea.Style.MidGC(Gtk.StateType.Normal), area.Left, y, area.Right, y);
                }
            }

            var points = data.Select((y, i) => new Point(
                                         (int)Math.Round(offset_x + scale_x * i),
                                         (int)Math.Round(offset_y + scale_y * y)));

            window.DrawLines(gc, points.ToArray());
        }