Hoy toca hacer la primera gráfica, como veremos en otra ocasión, vb.net nos proporciona herramientas para poder dibujar de manera que podríamos construir nuestro gráfico con estas herramientas. En esta ocasión toca la ley del mínimo esfuerzo, utilizar el trabajo de otro. Existe un control muy sencillo de utilizar para realizar esta tarea, ZedGraph nos permite realizar gráficos de diferentes tipos con realmente poco esfuerzo.

Aquí podéis ver los detalles de este interesante control. Y aquí podéis descargar todos los archivos. En concreto lo único que necesitamos para este proyecto es la dll. Descargáis el archivo, se descomprime y se guarda en una carpeta de fácil acceso.

En el proyecto del anterior post, añadimos un formulario que llamaremos FormGrafica. Ahora veamos los pasos necesarios para incluir este control en nuestro proyecto:
Herramientas > elegir elementos del cuadro de herramientas.

Una vez se ha abierto el cuadro de diálogo pinchamos en Examinar, buscamos la carpeta donde guardamos el control

Como se puede ver, yo descargue la librería, manuales y el sourcecode. Abrimos la carpeta zedgraph_dll_v515

Y seleccionamos el archivo ZedGraph. Con esto ya podemos utilizar el control en nuestro formulario

Arrastramos el control al formulario FormGrafica y le cambiamos la propiedad Dock a fill. Para poder ver el gráfico tendremos que poner un botón en el FormAnalizar, y como siempre, pinchamos dos veces, y en el gestor de eventos FormGrafica.Show().
Ahora veamos el código necesario para que el gráfico muestre nuestros datos.
Imports ZedGraph Public Class FormGrafica Private Sub FormGrafica_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Creamos el grafico CreateGraph(ZG1) End Sub Private Sub CreateGraph(ByVal zgc As ZedGraphControl) Dim myPane As GraphPane = zgc.GraphPane ' Asignamos titulos, escalas, etc myPane.Title.Text = "Grafica de datos historicos" myPane.XAxis.Title.Text = "TIEMPO" myPane.YAxis.Title.Text = "" myPane.YAxis.Scale.Min = 0 myPane.YAxis.Scale.Max = 16 myPane.XAxis.Type = AxisType.Text myPane.XAxis.Scale.TextLabels = FormAnalizar.Momento myPane.XAxis.MajorGrid.IsVisible = True myPane.YAxis.MajorGrid.IsVisible = True myPane.XAxis.Scale.FontSpec.Angle = 90 myPane.XAxis.Scale.FontSpec.Size = 8 'Transformar el dato en puntos Dim Bit(1) As Double ReDim Bit(FormAnalizar.Dato.Length - 1) Dim i As Integer 'Variable para recorrer cada momento Dim j As Integer 'Variable para cada bits For j = 0 To 15 For i = 0 To FormAnalizar.Dato.Length - 1 If FormAnalizar.Dato(i).Chars(j) = "0" Then Bit(i) = 0 + j Else Bit(i) = 0.5 + j Next Dim myCurve0 As LineItem = myPane.AddCurve("Bit" & j, Nothing, Bit, Color.Black, SymbolType.None) Next ' Fill the axis background with a color gradient myPane.Chart.Fill = New Fill(Color.White, Color.LightGoldenrodYellow, 45.0F) ' Fill the pane background with a color gradient myPane.Fill = New Fill(Color.White, Color.FromArgb(220, 220, 255), 45.0F) ' Calculate the Axis Scale Ranges zgc.AxisChange() End Sub Private Sub Form1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize 'Si cambiamos el tamaño del formulario se lee este código que envía a la función SetSice SetSize() End Sub Private Sub SetSize() 'Reconstruye el tamaño en funcion del tamaño del formulario ZG1.Location = New Point(10, 50) ' Leave a small margin around the outside of the control ZG1.Size = New Size(ClientRectangle.Width - 20, ClientRectangle.Height - 80) End Sub End Class
Y este es el resultado:

Aquí dejo el proyecto completo.
Chapeau David:
Te voy a fichar de “profe” cuando coja vacaciones ;-))
Gracias por tu trabajo. Por mi parte no cae en saco roto. Buena idea colgar el proyecto, así, si surgen dudas tontas por desconcimiento se pueden mirar en los manuales
Un saludo