private void btnAvanzar_Click(object sender, EventArgs e) { if (this.primeraEjecucion) { //deshabilitamos los ejemplos tsmnuEjemplos.Enabled = false; //Indicamos que se están ejecutando los cálculos. this.Cursor = Cursors.WaitCursor; //Generamos el controlador, que tiene las curvas individuales, parciales y puntos de corte. this.controladorBode = new ControladorBode(this.Formula.K, this.Formula.N1, this.Formula.T1, this.Formula.T2, this.Formula.Td, this.Formula.N2, this.Formula.T3, this.Formula.T4, this.Formula.Wn, this.Formula.Psi); //Generamos todos los LineItem de las curvas individuales y parciales. //Luego los iremos mostrando y ocultando a medida que sea necesario. if (this.controladorBode.CurvasIndividuales.Count > 0 && this.controladorBode.CurvasParciales.Count > 0) { this.lineItemsCurvasIndividualesMagnitud = generarLineItemsCurvasIndividualesMagnitud(); this.lineItemsCurvasIndividualesFase = generarLineItemsCurvasIndividualesFase(); this.lineItemsCurvasParcialesMagnitud = generarLineItemsCurvasParcialesMagnitud(); this.lineItemsCurvasParcialesFase = generarLineItemsCurvasParcialesFase(); this.lineItemsPuntosCorte = generarLineItemsPuntosCorte(); this.lineItemsPuntosCruceGanancia = generarLineItemsPuntosCruceGanancia(); this.lineItemsPuntosCruceFase = generarLineItemsPuntosCruceFase(); } //Resaltamos la gráfica de magnitud en magnitud = 0, y la gráfica de //fase en fase = -180,. PointPairList pplResaltadoMagnitud = new PointPairList(); pplResaltadoMagnitud.Add(this.controladorBode.InicioEjeX, 0); pplResaltadoMagnitud.Add(this.controladorBode.FinEjeX, 0); LineItem liResaltadoMagnitud = this.gpMagnitud.AddCurve("", pplResaltadoMagnitud, Color.Red, SymbolType.None); liResaltadoMagnitud.Line.Width = 2f; liResaltadoMagnitud.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; PointPairList pplResaltadoFaseSuperior = new PointPairList(); //pplResaltadoFaseSuperior.Add(this.controladorBode.InicioEjeX, 180); //pplResaltadoFaseSuperior.Add(this.controladorBode.FinEjeX, 180); LineItem liFaseResaltadoSuperior = this.gpFase.AddCurve("", pplResaltadoFaseSuperior, Color.Red, SymbolType.None); liFaseResaltadoSuperior.Line.Width = 2f; liFaseResaltadoSuperior.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; PointPairList pplResaltadoFase = new PointPairList(); pplResaltadoFase.Add(this.controladorBode.InicioEjeX, -180); pplResaltadoFase.Add(this.controladorBode.FinEjeX, -180); LineItem liFaseResaltado = this.gpFase.AddCurve("", pplResaltadoFase, Color.Red, SymbolType.None); liFaseResaltado.Line.Width = 2f; liFaseResaltado.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; this.primeraEjecucion = false; //Indicamos que los cálculos finalizaron. this.Cursor = Cursors.Default; reestablecerEscala(); } if (this.controladorBode.CurvasIndividuales.Count > 0 && this.controladorBode.CurvasParciales.Count > 0) avanzar(); }
private List<LineItem> generarLineItemsCurvasParcialesMagnitud(ControladorBode controladorBode, ZedGraphControl zedCMagnitud) { List<LineItem> lineItems = new List<LineItem>(); //Por cada curva creamos un LineItem, lo agregamos al gráfico y enseguida lo ocultamos. for (int indiceCurva = 0; indiceCurva < controladorBode.CurvasParciales.Count; indiceCurva++) { PointPairList pointPairList = new PointPairList(); for (int indicePunto = 0; indicePunto < controladorBode.CurvasParciales[indiceCurva].PuntosMagnitud.Count; indicePunto++) pointPairList.Add(controladorBode.CurvasParciales[indiceCurva].PuntosMagnitud[indicePunto][0], controladorBode.CurvasParciales[indiceCurva].PuntosMagnitud[indicePunto][1]); string nombre = ""; if (indiceCurva + 1 == controladorBode.CurvasParciales.Count) { nombre = "Curva Final"; } else { nombre = controladorBode.CurvasParciales[indiceCurva].Nombre; } LineItem lineItem = zedCMagnitud.GraphPane.AddCurve(nombre, pointPairList, this.colorCurvaParcial, SymbolType.None); lineItem.IsVisible = false; lineItem.Label.IsVisible = false; lineItem.Line.Width = GROSOR_CURVA_PARCIAL; lineItem.Line.IsAntiAlias = true; lineItem.Line.IsSmooth = true; lineItem.Line.SmoothTension = 0.05f; lineItems.Add(lineItem); } return lineItems; }
/// <summary> /// Limpia las gráficas de magnitud y fase, la fórmula mostrada, y reestablece todos los /// atributos gráficos y no gráficos. /// </summary> private void limpiar() { //Reestablecemos todos los atributos gráficos. this.lineItemsCurvasIndividualesMagnitud.Clear(); this.lineItemsCurvasIndividualesFase.Clear(); this.lineItemsCurvasParcialesMagnitud.Clear(); this.lineItemsCurvasParcialesFase.Clear(); this.lineItemsPuntosCorte.Clear(); this.lineItemsPuntosCruceGanancia.Clear(); this.lineItemsPuntosCruceFase.Clear(); this.graficaDobleActiva = true; //Reestablecemos los atributos no gráficos. this.controladorBode = null; this.Formula = null; this.primeraEjecucion = true; this.indiceCurvaActual = -1; //Reestablecemos la interfaz de usuario. this.btnAvanzar.Enabled = false; this.btnRetroceder.Enabled = false; establecerFormula(); dgvMargenes.Rows.Clear(); //Limpiamos las gráficas. this.gpMagnitud.CurveList.Clear(); this.gpFase.CurveList.Clear(); //Refrescamos las gráficas. this.zgcMagnitud.Invalidate(); this.zgcFase.Invalidate(); }
private void reestablecerEscala(ControladorBode controladorBode, ZedGraphControl zedCMagnitud, ZedGraphControl zedCFase) { zedCMagnitud.AxisChange(); zedCFase.AxisChange(); //Reestablecemos los valores mínimos y máximos de las gráficas. zedCMagnitud.GraphPane.YAxis.Scale.Min = controladorBode.InicioEjeYMagnitud; zedCMagnitud.GraphPane.YAxis.Scale.Max = controladorBode.FinEjeYMagnitud; zedCMagnitud.GraphPane.XAxis.Scale.Min = controladorBode.InicioEjeX; zedCMagnitud.GraphPane.XAxis.Scale.Max = controladorBode.FinEjeX; zedCFase.GraphPane.YAxis.Scale.Min = controladorBode.InicioEjeYFase; zedCFase.GraphPane.YAxis.Scale.Max = controladorBode.FinEjeYFase; zedCFase.GraphPane.XAxis.Scale.Min = controladorBode.InicioEjeX; zedCFase.GraphPane.XAxis.Scale.Max = controladorBode.FinEjeX; zedCMagnitud.Invalidate(); zedCFase.Invalidate(); }
private List<LineItem> generarLineItemsCurvasIndividualesFase(ControladorBode controladorBode, ZedGraphControl zedCFase) { List<LineItem> lineItems = new List<LineItem>(); //Por cada curva creamos un LineItem, lo agregamos al gráfico y enseguida lo ocultamos. for (int indiceCurva = 0; indiceCurva < controladorBode.CurvasIndividuales.Count; indiceCurva++) { PointPairList pointPairList = new PointPairList(); for (int indicePunto = 0; indicePunto < controladorBode.CurvasIndividuales[indiceCurva].PuntosFase.Count; indicePunto++) pointPairList.Add(controladorBode.CurvasIndividuales[indiceCurva].PuntosFase[indicePunto][0], controladorBode.CurvasIndividuales[indiceCurva].PuntosFase[indicePunto][1]); LineItem lineItem = zedCFase.GraphPane.AddCurve(controladorBode.CurvasIndividuales[indiceCurva].Nombre, pointPairList, this.coloresCurvasIndividuales[indiceCurva], SymbolType.None); lineItem.IsVisible = false; lineItem.Label.IsVisible = false; lineItem.Line.Width = GROSOR_CURVA_INDIVIDUAL; lineItem.Line.IsAntiAlias = true; lineItem.Line.IsSmooth = true; lineItem.Line.SmoothTension = 0.05f; lineItems.Add(lineItem); } return lineItems; }
public void metodoBtnAvanzarClick(ZedGraphControl zedCMagnitud, ZedGraphControl zedCFase, Formula formula) { List<LineItem> lineItemsCurvasIndividualesMagnitud = new List<LineItem>(); List<LineItem> lineItemsCurvasIndividualesFase = new List<LineItem>(); List<LineItem> lineItemsCurvasParcialesMagnitud = new List<LineItem>(); List<LineItem> lineItemsCurvasParcialesFase = new List<LineItem>(); List<LineItem> lineItemsPuntosCorte = new List<LineItem>(); List<LineItem> lineItemsPuntosCruceGanancia = new List<LineItem>(); List<LineItem> lineItemsPuntosCruceFase = new List<LineItem>(); ControladorBode controladorBode; //Indicamos que se están ejecutando los cálculos. this.Cursor = Cursors.WaitCursor; //Generamos el controlador, que tiene las curvas individuales, parciales y puntos de corte. controladorBode = new ControladorBode(formula.K, formula.N1, formula.T1, formula.T2, formula.Td, formula.N2, formula.T3, formula.T4, formula.Wn, formula.Psi); //Generamos todos los LineItem de las curvas individuales y parciales. //Luego los iremos mostrando y ocultando a medida que sea necesario. if (controladorBode.CurvasIndividuales.Count > 0 && controladorBode.CurvasParciales.Count > 0) { lineItemsCurvasIndividualesMagnitud = generarLineItemsCurvasIndividualesMagnitud(controladorBode,zedCMagnitud); lineItemsCurvasIndividualesFase = generarLineItemsCurvasIndividualesFase(controladorBode,zedCFase); lineItemsCurvasParcialesMagnitud = generarLineItemsCurvasParcialesMagnitud(controladorBode,zedCMagnitud); lineItemsCurvasParcialesFase = generarLineItemsCurvasParcialesFase(controladorBode,zedCFase); lineItemsPuntosCorte = generarLineItemsPuntosCorte(controladorBode, zedCMagnitud); lineItemsPuntosCruceGanancia = generarLineItemsPuntosCruceGanancia(controladorBode, zedCMagnitud, zedCFase); lineItemsPuntosCruceFase = generarLineItemsPuntosCruceFase(controladorBode, zedCMagnitud, zedCFase); } //Resaltamos la gráfica de magnitud en magnitud = 0, y la gráfica de //fase en fase = -180,. PointPairList pplResaltadoMagnitud = new PointPairList(); pplResaltadoMagnitud.Add(controladorBode.InicioEjeX, 0); pplResaltadoMagnitud.Add(controladorBode.FinEjeX, 0); LineItem liResaltadoMagnitud = zedCMagnitud.GraphPane.AddCurve("", pplResaltadoMagnitud, Color.Red, SymbolType.None); liResaltadoMagnitud.Line.Width = 2f; liResaltadoMagnitud.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; PointPairList pplResaltadoFaseSuperior = new PointPairList(); pplResaltadoFaseSuperior.Add(controladorBode.InicioEjeX, 180); pplResaltadoFaseSuperior.Add(controladorBode.FinEjeX, 180); LineItem liFaseResaltadoSuperior = zedCFase.GraphPane.AddCurve("", pplResaltadoFaseSuperior, Color.Red, SymbolType.None); liFaseResaltadoSuperior.Line.Width = 2f; liFaseResaltadoSuperior.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; PointPairList pplResaltadoFase = new PointPairList(); pplResaltadoFase.Add(controladorBode.InicioEjeX, -180); pplResaltadoFase.Add(controladorBode.FinEjeX, -180); LineItem liFaseResaltado = zedCFase.GraphPane.AddCurve("", pplResaltadoFase, Color.Red, SymbolType.None); liFaseResaltado.Line.Width = 2f; liFaseResaltado.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; //Indicamos que los cálculos finalizaron. this.Cursor = Cursors.Default; reestablecerEscala(controladorBode,zedCMagnitud,zedCFase); for (int indiceCurvaActual = 0; indiceCurvaActual < controladorBode.CurvasIndividuales.Count;indiceCurvaActual++ ) { mostrarCurvas(controladorBode, indiceCurvaActual, lineItemsCurvasIndividualesMagnitud, lineItemsCurvasIndividualesFase, lineItemsCurvasParcialesMagnitud, lineItemsCurvasParcialesFase, lineItemsPuntosCorte, lineItemsPuntosCruceGanancia, lineItemsPuntosCruceFase,zedCMagnitud,zedCFase); } }
private void mostrarCurvas(ControladorBode controladorBode, int indiceCurvaActual, List<LineItem> lineItemsCurvasIndividualesMagnitud, List<LineItem> lineItemsCurvasIndividualesFase, List<LineItem> lineItemsCurvasParcialesMagnitud, List<LineItem> lineItemsCurvasParcialesFase, List<LineItem> lineItemsPuntosCorte, List<LineItem> lineItemsPuntosCruceGanancia, List<LineItem> lineItemsPuntosCruceFase, ZedGraphControl zedCMagnitud, ZedGraphControl zedCFase) { //Curvas individuales. //Mostramos las curvas hasta el índice actual, y ocultamos las restantes. int cantidadCurvasIndividuales = controladorBode.CurvasIndividuales.Count; for (int i = 0; i < cantidadCurvasIndividuales; i++) { if (i <= indiceCurvaActual) { lineItemsCurvasIndividualesMagnitud[i].IsVisible = true; lineItemsCurvasIndividualesMagnitud[i].Label.IsVisible = true; lineItemsCurvasIndividualesFase[i].IsVisible = true; lineItemsCurvasIndividualesFase[i].Label.IsVisible = true; } else { lineItemsCurvasIndividualesMagnitud[i].IsVisible = false; lineItemsCurvasIndividualesMagnitud[i].Label.IsVisible = false; lineItemsCurvasIndividualesFase[i].IsVisible = false; lineItemsCurvasIndividualesFase[i].Label.IsVisible = false; } } //Puntos de corte. //Mostramos los puntos del índice actual, y ocultamos los demás. Tener en //cuenta que una curva puede no tener punto de corte. int cantidadPuntosCorte = controladorBode.CurvasIndividuales.Count; for (int i = 0; i < cantidadPuntosCorte; i++) { if (lineItemsPuntosCorte[i] != null) { if (i == indiceCurvaActual) lineItemsPuntosCorte[i].IsVisible = true; else lineItemsPuntosCorte[i].IsVisible = false; } } //Curvas parciales. //Mostramos las curvas del índice actual, y ocultamos las demás. int cantidadCurvasParciales = controladorBode.CurvasParciales.Count; for (int i = 0; i < cantidadCurvasParciales; i++) { if (i == indiceCurvaActual) { lineItemsCurvasParcialesMagnitud[i].IsVisible = true; lineItemsCurvasParcialesMagnitud[i].Label.IsVisible = true; lineItemsCurvasParcialesFase[i].IsVisible = true; lineItemsCurvasParcialesFase[i].Label.IsVisible = true; } else { lineItemsCurvasParcialesMagnitud[i].IsVisible = false; lineItemsCurvasParcialesMagnitud[i].Label.IsVisible = false; lineItemsCurvasParcialesFase[i].IsVisible = false; lineItemsCurvasParcialesFase[i].Label.IsVisible = false; } } //Muestra los puntos de cruce de fase y magnitud solo en la última gráfica. if ((cantidadCurvasParciales - 1) == indiceCurvaActual) { if (lineItemsPuntosCruceGanancia[0] != null) { lineItemsPuntosCruceGanancia[0].IsVisible = true; lineItemsPuntosCruceGanancia[0].Label.IsVisible = true; } if (lineItemsPuntosCruceGanancia[1] != null) { lineItemsPuntosCruceGanancia[1].IsVisible = true; lineItemsPuntosCruceGanancia[1].Label.IsVisible = true; //Si hay un cruce de ganancia, significa que hay margen de fase. lineItemsPuntosCruceGanancia[2].IsVisible = true; } if (lineItemsPuntosCruceFase[0] != null) { lineItemsPuntosCruceFase[0].IsVisible = true; lineItemsPuntosCruceFase[0].Label.IsVisible = true; } if (lineItemsPuntosCruceFase[1] != null) { lineItemsPuntosCruceFase[1].IsVisible = true; lineItemsPuntosCruceFase[1].Label.IsVisible = true; //Si hay un cruce de fase, significa que hay margen de ganancia. lineItemsPuntosCruceFase[2].IsVisible = true; } //Declaramos un datatable para poder guardar los datos obtenidos del datagridview //this.dat = new DataTable(); //this.dat.Columns.Add(new DataColumn("Margen", typeof(string))); //this.dat.Columns.Add(new DataColumn("Valor", typeof(string))); ////Mostramos el margen de ganancia. //if (this.controladorBode.MargenGanancia != null) //{ // dgvMargenes.Rows.Add("GANANCIA", this.controladorBode.MargenGanancia.ToString() + " dB"); // this.dat.Rows.Add("GANANCIA", this.controladorBode.MargenGanancia.ToString() + " dB"); // if (this.controladorBode.MargenGanancia >= 0) // { // dgvMargenes[1, 0].Style.BackColor = Color.LightBlue; // } // else // { // dgvMargenes[1, 0].Style.BackColor = Color.LightPink; // } //} //else //{ // dgvMargenes.Rows.Add("GANANCIA", "INFINITO"); // this.dat.Rows.Add("GANANCIA", "INFINITO"); //} ////Mostramos el margen de fase. //if (this.controladorBode.MargenFase != null) //{ // dgvMargenes.Rows.Add("FASE", this.controladorBode.MargenFase.ToString() + " °"); // this.dat.Rows.Add("FASE", this.controladorBode.MargenFase.ToString() + " º"); // if (this.controladorBode.MargenFase >= 0) // { // dgvMargenes[1, 1].Style.BackColor = Color.LightBlue; // } // else // { // dgvMargenes[1, 1].Style.BackColor = Color.LightPink; // } //} //else //{ // dgvMargenes.Rows.Add("FASE", "INFINITO"); // this.dat.Rows.Add("FASE", "INFINITO"); //} } //Quita los puntos de cruce de Fase y Magnitud si no se esta en la ULTIMA gráfica else { if (lineItemsPuntosCruceGanancia[0] != null) { lineItemsPuntosCruceGanancia[0].IsVisible = false; lineItemsPuntosCruceGanancia[0].Label.IsVisible = false; } if (lineItemsPuntosCruceGanancia[1] != null) { lineItemsPuntosCruceGanancia[1].IsVisible = false; lineItemsPuntosCruceGanancia[1].Label.IsVisible = false; } if (lineItemsPuntosCruceFase[0] != null) { lineItemsPuntosCruceFase[0].IsVisible = false; lineItemsPuntosCruceFase[0].Label.IsVisible = false; } if (lineItemsPuntosCruceFase[1] != null) { lineItemsPuntosCruceFase[1].IsVisible = false; lineItemsPuntosCruceFase[1].Label.IsVisible = false; } } reestablecerEscala(controladorBode, zedCMagnitud, zedCFase); ////Habilita el boton Adelante hasta que se dibuja la ultima curva //if (this.indiceCurvaActual == this.controladorBode.CurvasIndividuales.Count - 1) //{ // this.btnAvanzar.Enabled = false; // btnGuardar.Enabled = true; //} //else //{ // this.btnAvanzar.Enabled = true; //} ////Habilita el boton Atras hasta que se dibuja la primera curva //if (this.indiceCurvaActual == 0) //{ // this.btnRetroceder.Enabled = false; //} //else //{ // this.btnRetroceder.Enabled = true; //} }
private void metodoBtnSig_Click1() { if (this.primeraEjecucion1) { //Indicamos que se están ejecutando los cálculos. this.Cursor = Cursors.WaitCursor; //Generamos el controlador, que tiene las curvas individuales, parciales y puntos de corte. this.controladorBode1 = new ControladorBode(this.Formula1.K, this.Formula1.N1, this.Formula1.T1, this.Formula1.T2, this.Formula1.Td, this.Formula1.N2, this.Formula1.T3, this.Formula1.T4, this.Formula1.Wn, this.Formula1.Psi); //Generamos todos los LineItem de las curvas individuales y parciales. //Luego los iremos mostrando y ocultando a medida que sea necesario. if (this.controladorBode1.CurvasIndividuales.Count > 0 && this.controladorBode1.CurvasParciales.Count > 0) { this.lineItemsCurvasIndividualesMagnitud1 = generarLineItemsCurvasIndividualesMagnitud1(); this.lineItemsCurvasIndividualesFase1 = generarlineItemsCurvasIndividualesFase1(); this.lineItemsCurvasParcialesMagnitud1 = generarlineItemsCurvasParcialesMagnitud1(); this.lineItemsCurvasParcialesFase1 = generarlineItemsCurvasParcialesFase1(); this.lineItemsPuntosCorte1 = generarlineItemsPuntosCorte1(); this.lineItemsPuntosCruceGanancia1 = generarlineItemsPuntosCruceGanancia1(); this.lineItemsPuntosCruceFase1 = generarlineItemsPuntosCruceFase1(); } //Resaltamos la gráfica de magnitud en magnitud = 0, y la gráfica de //fase en fase = -180,. PointPairList pplResaltadoMagnitud = new PointPairList(); pplResaltadoMagnitud.Add(this.controladorBode1.InicioEjeX, 0); pplResaltadoMagnitud.Add(this.controladorBode1.FinEjeX, 0); LineItem liResaltadoMagnitud = this.gpMagnitud1.AddCurve("", pplResaltadoMagnitud, Color.Red, SymbolType.None); liResaltadoMagnitud.Line.Width = 2f; liResaltadoMagnitud.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; PointPairList pplResaltadoFaseSuperior = new PointPairList(); pplResaltadoFaseSuperior.Add(this.controladorBode1.InicioEjeX, 180); pplResaltadoFaseSuperior.Add(this.controladorBode1.FinEjeX, 180); LineItem liFaseResaltadoSuperior = this.gpFase1.AddCurve("", pplResaltadoFaseSuperior, Color.Red, SymbolType.None); liFaseResaltadoSuperior.Line.Width = 2f; liFaseResaltadoSuperior.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; PointPairList pplResaltadoFase = new PointPairList(); pplResaltadoFase.Add(this.controladorBode1.InicioEjeX, -180); pplResaltadoFase.Add(this.controladorBode1.FinEjeX, -180); LineItem liFaseResaltado = this.gpFase1.AddCurve("", pplResaltadoFase, Color.Red, SymbolType.None); liFaseResaltado.Line.Width = 2f; liFaseResaltado.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; this.primeraEjecucion1 = false; //Indicamos que los cálculos finalizaron. this.Cursor = Cursors.Default; reestablecerEscala1(); } if (this.controladorBode1.CurvasIndividuales.Count > 0 && this.controladorBode1.CurvasParciales.Count > 0) for (int i = 0; i < this.controladorBode1.CurvasParciales.Count; i++) { this.indiceCurvaActual1++; mostrarCurvas1(); } }
private List<LineItem> generarLineItemsPuntosCruceGanancia(ControladorBode controladorBode, ZedGraphControl zedCMagnitud,ZedGraphControl zedCFase) { List<LineItem> lineItems = new List<LineItem>(); //Algunas curvas pueden no tener punto de corte, por lo que no habrá que dibujar nada. if (controladorBode.CruceGanancia[0, 0] != null) { PointPairList pointPairList = new PointPairList(); pointPairList.Add((double)controladorBode.CruceGanancia[0, 0], (double)controladorBode.CruceGanancia[0, 1]); LineItem lineItem = zedCMagnitud.GraphPane.AddCurve("Cruce de Ganancia", pointPairList, Color.Black, SymbolType.Triangle); lineItem.IsVisible = false; lineItem.Label.IsVisible = false; lineItem.Symbol.Fill = new Fill(Color.Yellow); lineItem.Symbol.Border.Color = Color.Black; lineItem.Symbol.Border.Width = 1.0f; lineItem.Symbol.Size = 17.0f; lineItem.Symbol.IsAntiAlias = true; lineItems.Add(lineItem); } else { //Debemos saber cuál punto de corte pertenece a cuál curva, así //que debemos mantener una referencia. lineItems.Add(null); } if (controladorBode.CruceGanancia[1, 0] != null) { PointPairList pointPairList = new PointPairList(); pointPairList.Add((double)controladorBode.CruceGanancia[1, 0], (double)controladorBode.CruceGanancia[1, 1]); LineItem lineItem = zedCFase.GraphPane.AddCurve("Margen de Fase", pointPairList, Color.Black, SymbolType.Square); lineItem.IsVisible = false; lineItem.Label.IsVisible = false; lineItem.Symbol.Fill = new Fill(Color.Yellow); lineItem.Symbol.Border.Color = Color.Black; lineItem.Symbol.Border.Width = 1.0f; lineItem.Symbol.Size = 17.0f; lineItem.Symbol.IsAntiAlias = true; lineItems.Add(lineItem); //Agregamos una línea desde la marca del margen de fase hasta la línea de -180 grados. PointPairList ppl = new PointPairList(); ppl.Add((double)controladorBode.CruceGanancia[1, 0], (double)controladorBode.CruceGanancia[1, 1]); ppl.Add((double)controladorBode.CruceGanancia[1, 0], -180); LineItem li = zedCFase.GraphPane.AddCurve("", ppl, Color.Black, SymbolType.None); li.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; li.Line.Width = 2f; li.IsVisible = false; li.Label.IsVisible = false; lineItems.Add(li); } else { //Debemos saber cuál punto de corte pertenece a cuál curva, así //que debemos mantener una referencia. lineItems.Add(null); } return lineItems; }
private List<LineItem> generarLineItemsPuntosCorte(ControladorBode controladorBode, ZedGraphControl zedCMagnitud) { List<LineItem> lineItems = new List<LineItem>(); //Por cada punto de corte creamos un LineItem, lo agregamos al gráfico y enseguida lo ocultamos. for (int indiceCurva = 0; indiceCurva < controladorBode.CurvasIndividuales.Count; indiceCurva++) { //Algunas curvas pueden no tener punto de corte, por lo que no habrá que dibujar nada. if (controladorBode.CurvasIndividuales[indiceCurva].PuntoCorte != null) { PointPairList pointPairList = new PointPairList(); pointPairList.Add(controladorBode.CurvasIndividuales[indiceCurva].PuntoCorte[0], controladorBode.CurvasIndividuales[indiceCurva].PuntoCorte[1]); LineItem lineItem = zedCMagnitud.GraphPane.AddCurve("Punto de corte: " + controladorBode.CurvasIndividuales[indiceCurva].Nombre, pointPairList, Color.Black, SymbolType.Diamond); lineItem.IsVisible = false; lineItem.Label.IsVisible = false; lineItem.Symbol.Fill = new Fill(this.coloresCurvasIndividuales[indiceCurva]); lineItem.Symbol.Border.Color = Color.Black; lineItem.Symbol.Border.Width = 1.0f; lineItem.Symbol.Size = 17.0f; lineItem.Symbol.IsAntiAlias = true; lineItems.Add(lineItem); } else { //Debemos saber cuál punto de corte pertenece a cuál curva, así //que debemos mantener una referencia. lineItems.Add(null); } } return lineItems; }