Luis Garcia STAFF TEAM
Mensajes : 64 Puntos : 112
| Tema: Graficos_Grafica de barras Lun Abr 25, 2011 4:38 pm | |
| Utilizando gráficos realizaremos un ejemplo de gráficas de barras. [Tienes que estar registrado y conectado para ver esa imagen]En un proyecto windows forms agregaremos el "using": - Código:
-
using System.Drawing;
Agregamos un vector de brochas dentro de la clase principal, este vector lo utilizaremos luego para tener colores distintos en nuestra grafica de barras: - Código:
-
Brush[] brochas = new Brush[] { Brushes.Red, Brushes.Blue, Brushes.Orange, Brushes.Aqua, Brushes.Black, Brushes.SkyBlue, Brushes.Pink, Brushes.Purple, Brushes.Yellow };
Necesitaremos algunos controles para nuestro formulario, por lo tanto agregamos: -Un TextBox para insertar datos. -Dos ListBox, uno para los datos y un segundo para el porcentaje que representa dicho dato en la gráfica. -Un control Panel que utilizaremos para dibujar sobre el, como si fuese un lienzo. -Tres botones, uno para agregar los datos, el segundo para borrar las listas de datos y porcentajes y el tercero para graficar los datos. Antes que nada realizamos una pequeña validación para no permitir datos que no sean cantidades, en el evento keypress del textbox: - Código:
-
if (!char.IsNumber(e.KeyChar)) { e.Handled = true; }
En el evento click del boton para agregar datos: - Código:
-
if (txtDato.Text != "")//No se permiten datos vacios { lbDatos.Items.Add(txtDato.Text); txtDato.Text = ""; }
En el evento click del boton "limpiar": - Código:
-
lbDatos.Items.Clear(); lbPorcentaje.Items.Clear(); txtDato.Focus();
En el evento click del boton "graficar": - Código:
-
Graphics grafico = pnGrafica.CreateGraphics();//Creamos grafico grafico.Clear(Color.White);
float total = 0; float altura_grafica = 0; float altura = 0; float posx = 0; byte contador = 0;
for (int j = 0; j < lbDatos.Items.Count; j++) { total += float.Parse(lbDatos.Items[j].ToString()); /* Suma total para el calculo de porcentajes */ }
lbPorcentaje.Items.Clear(); StringFormat strFormat = new StringFormat();//Formato de texto strFormat.FormatFlags = StringFormatFlags.DirectionVertical; //Formato vertical de texto for (int i = 0; i < lbDatos.Items.Count; i++) { altura = float.Parse(lbDatos.Items[i].ToString()) / total * pnGrafica.Height; //Altura es la cantidad total de altura que debe tener la barra en relacion al dato altura_grafica = pnGrafica.Height -altura ; /* Posición de la esquina superior izquierda de las barras */ grafico.FillRectangle(brochas[contador],posx, altura_grafica,pnGrafica.Width/lbDatos.Items.Count, altura); /* Dibujo de rectangulo */ lbPorcentaje.Items.Add(float.Parse(lbDatos.Items[i].ToString()) / total * 100);
grafico.DrawString(lbDatos.Items[i].ToString(), new System.Drawing.Font("Courier New", 12, FontStyle.Bold), Brushes.White, posx, pnGrafica.Height - 40, strFormat);
if (contador > 7) { contador = 0; }//contador es para seleccionar el color else { contador++; } posx += pnGrafica.Width / lbDatos.Items.Count; } }
Descargar: [url] [Tienes que estar registrado y conectado para ver este vínculo] de barras.zip[/url] | |
|