Uso del control ZedGraph con C# Uso del control ZedGraph en C# Aintzane Conde Uso del control ZedGraph con C# Aintzane Conde Uso del control ZedGraph en C# Se trata de implementar un gráfico en nuestro formulario. Para realizar este proyecto es necesario descargar la referencia ZedGraph, que se encuentra en este enlace. Abrimos un nuevo proyecto de Microsoft Visual C# Express 2010. En la parte superior derecha, hacemos click en References con el botón secundario del ratón, tal y como se indica en la figura, y elegimos Agregar referencia. Examinamos la ubicación del archivo que necesitamos (la extensión dll de ZedGraph), y pinchamos en Aceptar. Uso del control ZedGraph con C# Aintzane Conde Uso del control ZedGraph con C# Aintzane Conde Una vez agregada la referencia, debemos insertar el control. Desplegamos el Cuadro de herramientas que se encuentra en la parte izquierda de la pantalla (o bien hacemos click en el icono indicado en la figura). Sobre dicho cuadro, pinchamos con el botón secundario del ratón y seleccionamos la opción Elegir elementos. Hacemos click en Examinar y buscamos el mismo archivo anterior. Una vez realizada esta operación, nos aparecerá el control de la siguiente manera: Uso del control ZedGraph con C# Aintzane Conde Una vez hemos pinchado en Aceptar, arrastramos el control a nuestro formulario y cambiamos la propiedad Name (zedGraphControl1 por zgcGrafico). Es aconsejable cambiar esta propiedad por un nombre que haga referencia a la aplicación para la que lo estamos utilizando, ya que puede llevarnos a errores cuando necesitemos más de un control. Uso del control ZedGraph con C# Aintzane Conde Haciendo doble click sobre el formulario, nos aparecerá el código. Como primer paso, crearemos un ArrayList en el que introduciremos los valores a representar (posteriormente, veremos más opciones acerca de la introducción de datos para su representación). En el Form1_Load cargaremos las propiedades que queremos visualizar desde el inicio de la ejecución del programa y, desde ahí, llamaremos a la función Representación. Esta función se encargará de representar los puntos en el gráfico. Uso del control ZedGraph con C# Aintzane Conde Código using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; using System.Collections; //Para poder usar las colecciones (ArrayList) using ZedGraph; //Para poder usar los comandos relacionados con el gráfico namespace WindowsFormsApplication1 { public partial class Form1 : Form { //Variable global ArrayList Puntos = new ArrayList(); public Form1() { InitializeComponent(); } //Los puntos a representar se añaden en la lista Puntos Puntos.Add("1"); Puntos.Add("2"); Puntos.Add("3"); Puntos.Add("4"); Puntos.Add("5"); Puntos.Add("4"); Puntos.Add("3"); Puntos.Add("2"); private void Representacion(ArrayList alLista) { int i; //Se asegura que curvelist tiene, al menos, una curva if (zgcGrafico.GraphPane.CurveList.Count <= 0) return; //Obtener el CurveItem por primera vez en el gráfico LineItem curvaGrafico = zgcGrafico.GraphPane.CurveList[0] as LineItem; if (curvaGrafico == null) return; //Obtener el PointPairList IPointListEdit lista = curvaGrafico.Points as IPointListEdit; // Si éste es nulo, significa que la referencia en curve.Points no admite //IPointListEdit, //por lo que no será capaz de modificarlo if (lista == null) return; //Adición de los puntos for (i = 0; i <= alLista.Count - 1; i++) { Uso del control ZedGraph con C# Aintzane Conde lista.Add(i, Convert.ToDouble(alLista[i])); } //Mantener la escala en X en un intervalo continuo de 30 segundos, //entre el máximo valor de X y el extremo del eje Scale xScale = zgcGrafico.GraphPane.XAxis.Scale; if (i > xScale.Max - xScale.MajorStep) { xScale.Max = i + xScale.MajorStep; xScale.Min = xScale.Max - 30.0; } //Se asegura que el eje Y se reajustará para dar cabida a los datos reales zgcGrafico.AxisChange(); //Forzar un redibujo zgcGrafico.Invalidate(); } private void Grafico_Resize(object sender, EventArgs e) { SetSize(); } //Ajustar el tamaño y la ubicación del ZedGraphControl private void SetSize() { //El control está siempre insertado en 10 píxeles del rectángulo formulario Rectangle formRect = this.ClientRectangle; formRect.Inflate(-10, -10); } if (zgcGrafico.Size != formRect.Size) { zgcGrafico.Location = formRect.Location; zgcGrafico.Size = formRect.Size; } private void Form1_Load(object sender, EventArgs e) { /*PRESENTACIÓN DEL GRÁFICO*/ GraphPane Grafico = zgcGrafico.GraphPane; //Títulos de los gráficos Grafico.Title.Text = "Datos"; Grafico.XAxis.Title.Text = "Puntos"; Grafico.YAxis.Title.Text = "Valores de X"; //Se guardan 1.200 puntos. //El RollingPointPairList es una clase de almacenamiento eficiente, que siempre //mantiene un conjunto de rodadura de punto de datos sin necesidad de cambiar //los valores de datos RollingPointPairList Lista = new RollingPointPairList(1200); //En un principio la curva se añade sin puntos de datos (la lista está vacía) //El color es azul y no habrá símbolos LineItem curva = Grafico.AddCurve("Valores de X", Lista, Color.Blue, SymbolType.None); // Se controla manualmente que el rango del eje X está continuamente Grafico.XAxis.Scale.Min = 0; Uso del control ZedGraph con C# Aintzane Conde Grafico.XAxis.Scale.Max = 30; Grafico.XAxis.Scale.MinorStep = 1; Grafico.XAxis.Scale.MajorStep = 5; //Escalar los ejes zgcGrafico.AxisChange(); //Función de representación de los puntos Representacion(Puntos); } } } Conclusión El resultado obtenido es el de la siguiente figura: