Uso del control ZedGraph en C

Anuncio
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:
Descargar