예제 #1
0
파일: test.cs 프로젝트: willy40/testmono
	static void Main ()
	{
#if GTK
		Application.Init ();

		Window w = new Window ("Test");
		w.DeleteEvent += delegate {
			Application.Quit ();
		};
		
		NPlot.Gtk.PlotSurface2D plot = new NPlot.Gtk.PlotSurface2D ();

		PlotTest (plot);
		
		plot.Show ();
		w.Add (plot);
		w.ShowAll ();

		Application.Run ();
#else

		NPlot.PlotSurface2D s = new NPlot.PlotSurface2D ();
		Bitmap b = new Bitmap (1000, 1000);
		Graphics g = Graphics.FromImage (b);
		g.FillRectangle  (Brushes.White, 0, 0, 1000, 1000);
		Rectangle bounds = new Rectangle (0, 0, 1000, 1000);
		PlotTest (s);
		s.Draw (g, bounds);
		b.Save ("file.png", ImageFormat.Png);
#endif
	}
예제 #2
0
    private void test(Fixed _fixed)
    {
        double[] a = {0, 200, 140, 14, 240, 320, 150, 80, 170, 90};
        //Теперь можно нарисовать соответствующую линию и задать ей название в легенде
        LinePlot lp = new LinePlot();
        lp.DataSource = a;
        lp.Label = "My Label";
        //По умолчанию линия черная и тонкая. Это можно изменить предварительно созданным объектом System.Drawing.Pen
        lp.Pen = new Pen(new SolidBrush(System.Drawing.Color.Black));

        //Для лучшего вида на график наносится сетка
        Grid myGrid = new Grid();
        //По неясной причине, Vertical обозначает горизонтальные линии, которые будут видимы в данном случае
        myGrid.VerticalGridType = Grid.GridType.Fine;
        //а Horizontal — вертикальные линии сетки, которые будут убраны
        myGrid.HorizontalGridType = Grid.GridType.None;

        NPlot.Gtk.PlotSurface2D plot = new NPlot.Gtk.PlotSurface2D();
        //И очистить его от лишнего содержимого, если имеется
        plot.Clear();
        //Можно установить заголовок
        plot.Title = "Title";
        //Добавить рамочку с легендой графика
        plot.Legend = new Legend();
        //переместить ее вправо-вниз
        plot.Legend.AttachTo(NPlot.PlotSurface2D.XAxisPosition.Bottom, NPlot.PlotSurface2D.YAxisPosition.Right);
        //отодвинуть от оси, чтобы не перекрывать числа
        plot.Legend.YOffset = 16;
        //и вынести за плоскость графика
        plot.Legend.HorizontalEdgePlacement = Legend.Placement.Outside;
        plot.Legend.VerticalEdgePlacement = Legend.Placement.Inside;
        //Расширим пространство вокруг плоскости графика
        plot.Padding = 40;
        //Чтобы линии выглядели не так убого, стоит их сгладить
        plot.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        //Осталось добавить все элементы на график
        plot.Add(myGrid);
        plot.Add(lp);
        //Если график финансовый, то надо это четко обозначить, подписав ось
        plot.YAxis1.Label = "Money";
        //и сделав нормальное отображение чисел на оси (по умолчанию — экспоненциальный вид)
        plot.YAxis1.NumberFormat = "{0:n}";
        //Последний шаг
        plot.Refresh();
        plot.Show();
        _fixed.Put(plot, 0, 120);
    }