/// <summary> /// Modifica la grafica que se va a presentar /// </summary> /// <param name="mes">Mes usado para pintar el eje X</param> /// <param name="sucursalId">Identificador de la Sucursal a usar</param> /// <param name="datos">DataSet con la informacion</param> /// <param name="diasMes">Numero de dias del mes</param> /// <param name="totalFlota">Lista con la suma de totales de la flota</param> /// <param name="totalRentados">Lista con las suma de los totales rentados de la flota</param> private void ModificarGrafica(int mes, int sucursalId, RentasSucursalDS datos, int diasMes, List <Int32> totalFlota, List <Int32> totalRentados) { XRChart grafica = this.xrGraficaUtilizacion as XRChart; var nombreMes = datos.Meses.First(x => x.Mes == mes).Nombre; if (sucursalId != 0) { var nombreSucursal = datos.Sucursales.First(x => x.SucursalID == sucursalId).Nombre; grafica.Titles[0].Text = "SUCURSAL " + nombreSucursal + " " + nombreMes; } else { grafica.Titles[0].Text = "TOTAL " + nombreMes; } XYDiagram diagramaGrafica = grafica.Diagram as XYDiagram; diagramaGrafica.AxisX.CustomLabels.Clear(); diagramaGrafica.AxisX.Range.MaxValue = diasMes; for (int i = 1; i < diasMes + 1; i++) { CustomAxisLabel customAxisLabel = new CustomAxisLabel(); customAxisLabel.Name = i.ToString(); customAxisLabel.AxisValue = i.ToString(); diagramaGrafica.AxisX.CustomLabels.Add(customAxisLabel); } if (sucursalId == 0) { RentasSucursalDS newDataSet = new RentasSucursalDS(); for (int i = 0; i < totalFlota.Count; i++) { Int32 totalFlotaDia = totalFlota[i]; Int32 totalRentadosDia = totalRentados[i]; Double?porcentaje = null; if (totalFlotaDia != 0) { porcentaje = (Double.Parse(totalRentadosDia.ToString()) / Double.Parse(totalFlotaDia.ToString())); } else { porcentaje = 0; } var row = newDataSet.SubTotalXDia.NewSubTotalXDiaRow(); row.Dia = i + 1; row.Mes = mes; row.PorcentajeUtilizacionFlota = Int32.Parse(Math.Round((Double)(porcentaje * 100)).ToString()); row.Anio = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Anio") : Anio.Value; newDataSet.SubTotalXDia.AddSubTotalXDiaRow(row); } grafica.DataSource = newDataSet; } else { grafica.DataSource = datos; } }
void LookAndFeel_StyleChanged(object sender, EventArgs e) { XYDiagram xYDiagram = stockChart.Diagram as XYDiagram; CustomAxisLabel customAxisLabel = xYDiagram.AxisY.CustomLabels[0]; customAxisLabel.BackColor = Skins.CommonSkins.GetSkin(stockChart.LookAndFeel).SvgPalettes[ObjectState.Normal].GetColor("Gray"); customAxisLabel.TextColor = Skins.CommonSkins.GetSkin(stockChart.LookAndFeel).SvgPalettes[ObjectState.Normal].GetColor("White"); }
// 根据交易时段设置label public static void SetCustomLabel(ChartControl chartControl, DataRow[] drSegment) { XYDiagram diagram = (XYDiagram)chartControl.Diagram; diagram.AxisX.WholeRange.SetMinMaxValues((String)drSegment[0]["BeginTime"], (String)drSegment[drSegment.Length - 1]["EndTime"]); diagram.AxisX.VisualRange.SetMinMaxValues((String)drSegment[0]["BeginTime"], (String)drSegment[drSegment.Length - 1]["EndTime"]); String dt = DateTime.Now.ToString("yyyyMMdd"); DateTime dtCur = DateTime.ParseExact(dt + (String)drSegment[0]["BeginTime"], "yyyyMMddHHmm", System.Globalization.CultureInfo.CurrentCulture); dtCur = dtCur.AddDays((long)drSegment[0]["BeginDay"]); CustomAxisLabelCollection labels = diagram.AxisX.CustomLabels; for (int i = 0; i < drSegment.Length; i++) { DateTime dtBegin = DateTime.ParseExact(dt + (String)drSegment[i]["BeginTime"], "yyyyMMddHHmm", System.Globalization.CultureInfo.CurrentCulture); dtBegin = dtBegin.AddDays((long)drSegment[i]["BeginDay"]); DateTime dtEnd = DateTime.ParseExact(dt + (String)drSegment[i]["EndTime"], "yyyyMMddHHmm", System.Globalization.CultureInfo.CurrentCulture); dtEnd = dtEnd.AddDays((long)drSegment[i]["EndDay"]); if (dtCur < dtBegin) { if (i == 0) { dtCur = dtBegin; } else if (dtBegin.Hour == 10) { dtCur = dtBegin.AddMinutes(15); } else { dtCur = dtBegin.AddMinutes(30); } } while (dtCur <= dtEnd) { String strLabel = dtCur.ToString("HH:mm"); CustomAxisLabel onelabel = new CustomAxisLabel(); onelabel.AxisValue = strLabel; onelabel.Name = strLabel; labels.Add(onelabel); dtCur = dtCur.AddMinutes(30); } } }
/// <summary> /// Crea las cordenadas del eje x, usando las primeras letras del mes /// </summary> public void CreateAxisX() { XYDiagram diagram = (this.chartTimeUtilization.Diagram as XYDiagram); diagram.AxisX.CustomLabels.Clear(); ReporteRDSucursalDS dataSet = this.DataSource as ReporteRDSucursalDS; foreach (ReporteRDSucursalDS.MesesRow row in dataSet.Meses.Rows) { CustomAxisLabel customAxisLabel = new CustomAxisLabel(); customAxisLabel.Name = row.Nombre.Substring(0, 1).ToUpper(); customAxisLabel.AxisValue = String.Format("{0}-{1}", row.Anio, row.Mes); diagram.AxisX.CustomLabels.Add(customAxisLabel); } }
/// <summary> /// Crea las coordenadas del eje X, usando las primeras letras del mes /// </summary> public void CreateAxisX() { XYDiagram diagrama = (this.xrChartElementoSucursal.Diagram as XYDiagram); diagrama.AxisX.CustomLabels.Clear(); DollarUtilizationDS rs = this.DataSource as DollarUtilizationDS; foreach (DollarUtilizationDS.MesesRow row in rs.Meses.Rows) { CustomAxisLabel customAxisLabel = new CustomAxisLabel(); customAxisLabel.Name = row.Nombre.Substring(0, 1).ToUpper(); customAxisLabel.AxisValue = row.Mes; diagrama.AxisX.CustomLabels.Add(customAxisLabel); } }
/// <summary> /// Crea las cordenadas del eje x, usando las primeras letras del mes /// </summary> public void CreateAxisX() { XYDiagram diagram = (this.xrcGraficaRendimiento.Diagram as XYDiagram); diagram.AxisX.CustomLabels.Clear(); ReporteRendimientoUnidadDS dataSet = this.DataSource as ReporteRendimientoUnidadDS; foreach (ReporteRendimientoUnidadDS.MesesRow row in dataSet.Meses.Rows) { CustomAxisLabel customAxisLabel = new CustomAxisLabel(); customAxisLabel.Name = row.NombreMes.Substring(0, 1).ToUpper(); customAxisLabel.AxisValue = String.Format("{0}-{1}", row.Anio, row.Mes); customAxisLabel.Visible = true; diagram.AxisX.CustomLabels.Add(customAxisLabel); } }
void initGantt(List <TaskTree> tasktree, DateTime[] projectDate) { BandedGridView view = advBandedGridView1 as BandedGridView; view.BeginUpdate(); //开始视图的编辑,防止触发其他事件 view.BeginDataUpdate(); //开始数据的编辑 view.Bands.Clear(); DateTime start = new DateTime(2013, 12, 10); DateTime end = new DateTime(2014, 5, 2); GridBand gridBand = view.Bands.AddBand(start.ToString("yy-MM-dd")); gridBand.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; int days = (end - start).Days; string Day = "日一二三四五六"; CustomAxisLabel[] customaxislabels = new CustomAxisLabel[days + 1]; customaxislabels[0] = new CustomAxisLabel(start.ToString("yy-MM-dd"), start); for (int i = 0; i <= days + 1; i++) { try { CustomAxisLabel cal = new CustomAxisLabel(); cal.AxisValue = start; cal.Name = start.ToString("yy-MM-dd"); customaxislabels[i + 1] = cal; if (start.DayOfWeek == DayOfWeek.Monday) { gridBand = view.Bands.AddBand(start.ToString("yyyy-MM-dd")); gridBand.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; } GridBand childen = gridBand.Children.AddBand(Day[(int)start.DayOfWeek] + ""); childen.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; childen.Width = 24; start = start.AddDays(1); } catch { } } gcGanttDate.Width = days * 24 + 2; view.EndDataUpdate(); //结束数据的编辑 view.EndUpdate(); //结束视图的编辑 //设置甘特图属性 ccProjectGantt.Width = gcGanttDate.Width; //chartControl1.Height = 4 * 24; ganttDiagram1.AxisX.Visible = false; ganttDiagram1.AxisY.CustomLabels.AddRange(customaxislabels); ConstantLine progress = new ConstantLine("当前进度", DateTime.Now); progress.Color = Color.Red; ganttDiagram1.AxisY.ConstantLines.Add(progress); ganttDiagram1.AxisY.Range.MinValueInternal = 0; ganttDiagram1.AxisY.Range.MaxValueInternal = days * 24; ganttDiagram1.AxisY.Visible = false; series1.Points.Add(new SeriesPoint("项目进度", new DateTime[] { new DateTime(2013, 12, 12, 0, 0, 0), new DateTime(2014, 4, 30) })); SeriesPoint sp = new SeriesPoint(); series2.Points.Add(new SeriesPoint("产品进度", new DateTime[] { new DateTime(2013, 12, 12), new DateTime(2014, 1, 12) })); series2.Points.Add(new SeriesPoint("Task 2", new DateTime[] { new DateTime(2014, 1, 13), new DateTime(2014, 2, 28) })); series2.Points.Add(new SeriesPoint("Task 3", new DateTime[] { new DateTime(2014, 3, 1), new DateTime(2014, 3, 30) })); series2.Points.Add(new SeriesPoint("Task 4", new DateTime[] { new DateTime(2014, 4, 1), new DateTime(2014, 4, 30) })); series2.Points[2].Relations.Add(series2.Points[1]); series3.Points.Add(new SeriesPoint("产品进度", new DateTime[] { new DateTime(2013, 12, 12), new DateTime(2014, 1, 12) })); series3.Points.Add(new SeriesPoint("Task 2", new DateTime[] { new DateTime(2014, 1, 13), new DateTime(2014, 2, 28) })); series3.Points.Add(new SeriesPoint("Task 3", new DateTime[] { new DateTime(2014, 3, 1), new DateTime(2014, 3, 4) })); series4.Points.Add(new SeriesPoint("Task 3", new DateTime[] { new DateTime(2014, 3, 4), DateTime.Now })); }
protected override void UpdateChart() { AxisBase axis; if (!string.IsNullOrWhiteSpace(AxisName)) { axis = BaseAxisCmdlet.GetSecondaryAxis(ChartContext.Chart.Diagram, AxisType, AxisName); if (axis == null) { throw new Exception($"Cannot find axis '{AxisName}'."); } } else { axis = BaseAxisCmdlet.GetPrimaryAxis(ChartContext.Chart.Diagram, AxisType); if (axis == null) { throw new Exception("Cannot find primary axis."); } } if (axis is not Axis2D axis2D) { throw new Exception("Only 2D axis support custom labels."); } var label = new CustomAxisLabel(); if (!string.IsNullOrWhiteSpace(Name)) { label.Name = Name; } label.AxisValue = Value; var backColor = Utils.ColorFromString(BackColor); if (backColor != Color.Empty) { label.BackColor = backColor; } var borderColor = Utils.ColorFromString(BorderColor); if (borderColor != Color.Empty) { label.Border.Color = borderColor; label.Border.Visibility = DevExpress.Utils.DefaultBoolean.True; } if (BorderThickness.HasValue) { label.Border.Thickness = BorderThickness.Value; label.Border.Visibility = DevExpress.Utils.DefaultBoolean.True; } if (BorderVisible.HasValue) { label.Border.Visibility = BorderVisible.Value ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.Default; } if (FillMode.HasValue) { label.FillStyle.FillMode = FillMode.Value; switch (FillMode.Value) { case DevExpress.XtraCharts.FillMode.Empty: break; case DevExpress.XtraCharts.FillMode.Solid: break; case DevExpress.XtraCharts.FillMode.Gradient: if (label.FillStyle.Options is RectangleGradientFillOptions gradientOptions) { var backColor2 = Utils.ColorFromString(BackColor2); if (backColor2 != System.Drawing.Color.Empty) { gradientOptions.Color2 = backColor2; } if (FillGradientMode.HasValue) { gradientOptions.GradientMode = FillGradientMode.Value; } } break; case DevExpress.XtraCharts.FillMode.Hatch: if (label.FillStyle.Options is HatchFillOptions hatchOptions) { var backColor2 = Utils.ColorFromString(BackColor2); if (backColor2 != System.Drawing.Color.Empty) { hatchOptions.Color2 = backColor2; } if (FillHatchStyle.HasValue) { hatchOptions.HatchStyle = FillHatchStyle.Value; } } break; } } var font = Utils.StringToFont(Font, out Color textColor); if (font != null) { label.Font = font; } if (textColor != Color.Empty) { label.TextColor = textColor; } if (ShowGridLine) { label.GridLineVisible = true; } label.Visible = true; axis2D.CustomLabels.Add(label); }
void initGantt(List<TaskTree> tasktree,DateTime[] projectDate) { BandedGridView view = advBandedGridView1 as BandedGridView; view.BeginUpdate(); //开始视图的编辑,防止触发其他事件 view.BeginDataUpdate(); //开始数据的编辑 view.Bands.Clear(); DateTime start = new DateTime(2013, 12, 10); DateTime end = new DateTime(2014, 5, 2); GridBand gridBand = view.Bands.AddBand(start.ToString("yy-MM-dd")); gridBand.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; int days = (end - start).Days; string Day = "日一二三四五六"; CustomAxisLabel[] customaxislabels = new CustomAxisLabel[days + 1]; customaxislabels[0] = new CustomAxisLabel(start.ToString("yy-MM-dd"), start); for (int i = 0; i <= days + 1; i++) { try { CustomAxisLabel cal = new CustomAxisLabel(); cal.AxisValue = start; cal.Name = start.ToString("yy-MM-dd"); customaxislabels[i + 1] = cal; if (start.DayOfWeek == DayOfWeek.Monday) { gridBand = view.Bands.AddBand(start.ToString("yyyy-MM-dd")); gridBand.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; } GridBand childen = gridBand.Children.AddBand(Day[(int)start.DayOfWeek] + ""); childen.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; childen.Width = 24; start = start.AddDays(1); } catch { } } gcGanttDate.Width = days * 24 + 2; view.EndDataUpdate();//结束数据的编辑 view.EndUpdate(); //结束视图的编辑 //设置甘特图属性 ccProjectGantt.Width = gcGanttDate.Width; //chartControl1.Height = 4 * 24; ganttDiagram1.AxisX.Visible = false; ganttDiagram1.AxisY.CustomLabels.AddRange(customaxislabels); ConstantLine progress = new ConstantLine("当前进度", DateTime.Now); progress.Color = Color.Red; ganttDiagram1.AxisY.ConstantLines.Add(progress); ganttDiagram1.AxisY.Range.MinValueInternal = 0; ganttDiagram1.AxisY.Range.MaxValueInternal = days * 24; ganttDiagram1.AxisY.Visible = false; series1.Points.Add(new SeriesPoint("项目进度", new DateTime[] { new DateTime(2013, 12, 12, 0, 0, 0), new DateTime(2014, 4, 30) })); SeriesPoint sp = new SeriesPoint(); series2.Points.Add(new SeriesPoint("产品进度", new DateTime[] { new DateTime(2013, 12, 12), new DateTime(2014, 1, 12) })); series2.Points.Add(new SeriesPoint("Task 2", new DateTime[] { new DateTime(2014, 1, 13), new DateTime(2014, 2, 28) })); series2.Points.Add(new SeriesPoint("Task 3", new DateTime[] { new DateTime(2014, 3, 1), new DateTime(2014, 3, 30) })); series2.Points.Add(new SeriesPoint("Task 4", new DateTime[] { new DateTime(2014, 4, 1), new DateTime(2014, 4, 30) })); series2.Points[2].Relations.Add(series2.Points[1]); series3.Points.Add(new SeriesPoint("产品进度", new DateTime[] { new DateTime(2013, 12, 12), new DateTime(2014, 1, 12) })); series3.Points.Add(new SeriesPoint("Task 2", new DateTime[] { new DateTime(2014, 1, 13), new DateTime(2014, 2, 28) })); series3.Points.Add(new SeriesPoint("Task 3", new DateTime[] { new DateTime(2014, 3, 1), new DateTime(2014, 3, 4) })); series4.Points.Add(new SeriesPoint("Task 3", new DateTime[] { new DateTime(2014, 3, 4), DateTime.Now })); }
private void BindChart(DataTable dtSource, DataTable dtColumns) { if (dtColumns.Columns.Contains("DEFECT_QUANTITY")) { dtColumns.Columns.Remove("DEFECT_QUANTITY"); } XYDiagram diagram01; SecondaryAxisY xY; SecondaryAxisX xX; diagram01 = (XYDiagram)this.chart.Diagram; xY = diagram01.SecondaryAxesY.GetAxisByName("SecondaryAxisY"); xX = diagram01.SecondaryAxesX.GetAxisByName("SecondaryAxisX"); chart.Series.Clear(); Series[] ser = new Series[dtColumns.Rows.Count]; for (int i = 0; i < dtSource.Rows.Count; i++) { string oper = string.Empty; //不良原因分类 oper = dtSource.Rows[i][1].ToString(); ser[i] = new Series(oper, ViewType.Spline); ser[i].ArgumentScaleType = ScaleType.Qualitative; ser[i].ValueScaleType = ScaleType.Numerical; //SeriesPoint[] seriesPoints = new SeriesPoint[dtColumns.Rows.Count]; CustomAxisLabel[] lbls_xbar = new CustomAxisLabel[dtColumns.Rows.Count]; int n = 0; for (int j = 0; j < dtSource.Columns.Count; j++) { string col = dtSource.Columns[j].ColumnName; if (col.Equals("SEQ") || col.Equals("DEFECT_NAME")) { continue; } string data = dtSource.Rows[i][col].ToString(); if (string.IsNullOrEmpty(data)) { data = "0"; } if (data.Contains("%")) { data = (Convert.ToDecimal(data.Replace("%", "").Trim()) / 100).ToString(); } string xlable = GetResourceData(col); if (string.IsNullOrEmpty(xlable)) { xlable = col; } SeriesPoint seriesPoint = new SeriesPoint(xlable, (object)(data)); //seriesPoints[n] = seriesPoint; ser[i].Points.Add(seriesPoint); n++; } //ser[i].Points.AddRange(seriesPoints); chart.Series.Add(ser[i]); } xX.Visible = true; diagram01 = (XYDiagram)this.chart.Diagram; for (int i = 0; i < this.chart.Series.Count; i++) { Series s = this.chart.Series[i]; if (s.Name != "累计比例") { ((XYDiagramSeriesViewBase)s.View).AxisY = diagram01.SecondaryAxesY[0]; } } }
private void GroupHeader1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { if (this.GetCurrentColumnValue("alu_id") != null) { int esa_tipo = dsGestaoEscolar1.NEW_Relatorio_GrafIndividualNotas.AsEnumerable() .Where(p => Convert.ToInt64(p.Field <object>("alu_id")) == Convert.ToInt64(this.GetCurrentColumnValue("alu_id").ToString())) .FirstOrDefault().esa_tipo; int esa_id = dsGestaoEscolar1.NEW_Relatorio_GrafIndividualNotas.AsEnumerable() .Where(p => Convert.ToInt64(p.Field <object>("alu_id")) == Convert.ToInt64(this.GetCurrentColumnValue("alu_id").ToString())) .FirstOrDefault().esa_id; List <int> lstTpc = (from dadosGeral in dsGestaoEscolar1.NEW_Relatorio_GrafIndividualNotas.AsEnumerable() where Convert.ToInt64(dadosGeral.Field <object>("alu_id")) == Convert.ToInt64(this.GetCurrentColumnValue("alu_id").ToString()) group dadosGeral by dadosGeral.Field <object>("tpc_ordem") into dadosGeralTpc select Convert.ToInt32(dadosGeralTpc.Key)).ToList(); xrChart1.Series.Clear(); int series = 0; foreach (int tpc_ordem in lstTpc) { string tpc_nome = dsGestaoEscolar1.NEW_Relatorio_GrafIndividualNotas.AsEnumerable() .Where(p => Convert.ToInt32(p.Field <object>("tpc_ordem")) == tpc_ordem) .FirstOrDefault().tpc_nome; Series serie = new Series(tpc_nome, ViewType.Line); serie.ArgumentScaleType = ScaleType.Auto; xrChart1.Series.Add(serie); xrChart1.Series[series].DataSource = (from dadosGeral in dsGestaoEscolar1.NEW_Relatorio_GrafIndividualNotas.AsEnumerable() where Convert.ToInt64(dadosGeral.Field <object>("alu_id")) == Convert.ToInt64(this.GetCurrentColumnValue("alu_id").ToString()) && Convert.ToInt32(dadosGeral.Field <object>("tpc_ordem")) == tpc_ordem select dadosGeral).CopyToDataTable(); xrChart1.Series[series].ArgumentDataMember = "dis_nome"; xrChart1.Series[series].LegendText = tpc_nome; xrChart1.Series[series].ValueDataMembers[0] = "valor"; xrChart1.Series[series].ShowInLegend = true; if (esa_tipo == 2) { xrChart1.Series[series].LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; } series++; } if (!addRange) { addRange = true; (xrChart1.Diagram as XYDiagram).AxisY.Range.Auto = false; if (esa_tipo == 2) { List <ACA_EscalaAvaliacaoParecer> lstEscala = ACA_EscalaAvaliacaoParecerBO.GetSelectBy_Escala(esa_id); //Calcula valor minimo, maximo e a sobra de 5% para vizualisação dos pontos var MinValue = lstEscala.Min(p => p.eap_ordem); var MaxValue = lstEscala.Max(p => p.eap_ordem); decimal sobra = (MaxValue * (decimal)0.05); //Adiciona range da escala de avaliação. (xrChart1.Diagram as XYDiagram).AxisY.Range.MinValue = MinValue - sobra; (xrChart1.Diagram as XYDiagram).AxisY.Range.MaxValue = MaxValue + sobra; //Adiciona custom labels para as notas de conceito foreach (ACA_EscalaAvaliacaoParecer eap in lstEscala) { CustomAxisLabel label = new CustomAxisLabel(); label.AxisValue = eap.eap_ordem; label.Name = eap.eap_valor; (xrChart1.Diagram as XYDiagram).AxisY.CustomLabels.Add(label); } } else { List <ACA_EscalaAvaliacaoNumerica> lstEscala = ACA_EscalaAvaliacaoNumericaBO.GetSelectBy_Escala(esa_id); //Adiciona range da escala de avaliação. (xrChart1.Diagram as XYDiagram).AxisY.Range.MinValue = 0; (xrChart1.Diagram as XYDiagram).AxisY.Range.MaxValue = 10; (xrChart1.Diagram as XYDiagram).AxisY.CustomLabels.Clear(); int index = 0; for (int i = 0; i <= 10; i++) { (xrChart1.Diagram as XYDiagram).AxisY.CustomLabels.Add(new CustomAxisLabel(i.ToString())); (xrChart1.Diagram as XYDiagram).AxisY.CustomLabels[index].AxisValue = i; index++; } } (xrChart1.Diagram as XYDiagram).AxisY.Label.Angle = 0; } } }