You are on page 1of 9

Uso del control ZedGraph con C#

Aintzane Conde

Uso del control ZedGraph en C#

Uso del control ZedGraph con C#

Aintzane Conde

Uso del control ZedGraph en C#


Se trata de implementar un grfico 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 botn secundario del ratn, tal y como se indica en la figura, y elegimos Agregar referencia. Examinamos la ubicacin del archivo que necesitamos (la extensin 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 botn secundario del ratn y seleccionamos la opcin Elegir elementos. Hacemos click en Examinar y buscamos el mismo archivo anterior. Una vez realizada esta operacin, 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 aplicacin para la que lo estamos utilizando, ya que puede llevarnos a errores cuando necesitemos ms de un control.

Uso del control ZedGraph con C#

Aintzane Conde

Haciendo doble click sobre el formulario, nos aparecer el cdigo. Como primer paso, crearemos un ArrayList en el que introduciremos los valores a representar (posteriormente, veremos ms opciones acerca de la introduccin de datos para su representacin). En el Form1_Load cargaremos las propiedades que queremos visualizar desde el inicio de la ejecucin del programa y, desde ah, llamaremos a la funcin Representacin. Esta funcin se encargar de representar los puntos en el grfico.

Uso del control ZedGraph con C#

Aintzane Conde

Cdigo
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 grfico namespace WindowsFormsApplication1 { public partial class Form1 : Form { //Variable global ArrayList Puntos = new ArrayList(); public Form1() { InitializeComponent(); //Los puntos a representar se aaden 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 grfico 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; //Adicin de los puntos for (i = 0; i <= alLista.Count - 1; i++) {

Uso del control ZedGraph con C#


lista.Add(i, Convert.ToDouble(alLista[i])); }

Aintzane Conde

//Mantener la escala en X en un intervalo continuo de 30 segundos, //entre el mximo 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 tamao y la ubicacin del ZedGraphControl private void SetSize() { //El control est siempre insertado en 10 pxeles del rectngulo 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) { /*PRESENTACIN DEL GRFICO*/ GraphPane Grafico = zgcGrafico.GraphPane; //Ttulos de los grficos 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 aade sin puntos de datos (la lista est vaca) //El color es azul y no habr smbolos 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#


Grafico.XAxis.Scale.Max = 30; Grafico.XAxis.Scale.MinorStep = 1; Grafico.XAxis.Scale.MajorStep = 5; //Escalar los ejes zgcGrafico.AxisChange(); //Funcin de representacin de los puntos Representacion(Puntos); } } }

Aintzane Conde

Conclusin
El resultado obtenido es el de la siguiente figura: