[ Foro de C# ]

Gráficas en winforms

19-Aug-2014 13:48
Jose Valdes Sirvent
2 Respuestas

Hola gentucilla!
A ver, estoy haciendo un programa de control de compras para una empresa, donde una de las cosas más importantes que tengo que hacer son estadísticas sobre las compras de productos que han hecho y tal. Y, aunque no me lo han pedido explícitamente, sí que creo que sería un buen punto que mi programa pudiese hacer gráficas. Por ejemplo una gráfica de las variaciones del precio de determinado producto a lo largo del año. O del gasto mensual.. etc.

En fin.. hay alguna forma de hacer esto "automáticamente" ? Es decir, al igual que existe un DataGrid "rollo excel", quizá existiese alguna opción de gráficas..
Sé que winforms tiene opciones de dibujar, así que supongo que en el peor de los casos me tocaría programar a mí alguna forma de dibujar las gráficas mediante puntos y líneas y demás.. no sé hasta qué punto eso puede ser factible (aunque a priori no lo veo imposible, muy probablemente luego me lleve un gran chasco..).

Como siempre, muchísimas gracias a todos por la ayuda!!


21-Aug-2014 12:59
Nacho Cabanes (+32)

Tienes una biblioteca "System.Windows.Forms.DataVisualization.Charting". Un ejemplo básico para un diagrama de barras (obtenido de los foros de MSDN) podría ser:

 
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
 
namespace Barchart
{
    public partial class Form1 : Form
    {
        double[] xData = new double[] {1,2,3,4,5 };
        double[] yData = new double[] {6,7,3,4,5 };
 
        public Form1()
        {
            InitializeComponent();
            //Horizontal bar chart
            //Create a chart area and add it to the chart
            ChartArea area = new ChartArea("First");
            chart1.ChartAreas.Add(area);
            //Create a series using the data
            Series barSeries = new Series();
            barSeries.Points.DataBindXY(xData, yData);
            //Set the chart type, Bar; horizontal bars
            barSeries.ChartType = SeriesChartType.Bar;
            //Assign it to the required area
            barSeries.ChartArea = "First";
            //Add the series to the chart
            chart1.Series.Add(barSeries);
            //Vertical bar chart
            //create another area and add it to the chart
            ChartArea area2 = new ChartArea("Second");
            chart1.ChartAreas.Add(area2);
            //Create the series using just the y data
            Series barSeries2 = new Series();
            barSeries2.Points.DataBindY(yData);
            //Set the chart type, column; vertical bars
            barSeries2.ChartType = SeriesChartType.Column;
            barSeries2.ChartArea = "Second";
            //Add the series to the chart
            chart1.Series.Add(barSeries2);
        }
    }
}
 




21-Aug-2014 13:28
Jose Valdes Sirvent

Muchísimas gracias Nacho!! Le echaré un vistazo!! :D
Afortunadamente ya me voy manejando tanto con Winforms como con SQLite.. los primeros días me volvía loco con cualquier tontería pero ahora ya avanzo más o menos ligero..! :D






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)