private void ChartInit() { //RuntimeHitTesting设为True时,才可从ChartHitInfo中取得SeriesPoint //chartControl1.RuntimeHitTesting = true; XYDiagram myDiagram = chartControl1.Diagram as XYDiagram; AxisX myAxisX = myDiagram.AxisX; myAxisX.WholeRange.AutoSideMargins = false; myAxisX.WholeRange.SideMarginsValue = 0; foreach (ConstantLine cLine in myAxisX.ConstantLines) { cLine.Name = string.Empty; } AxisY myAxisY = myDiagram.AxisY; myAxisY.WholeRange.AutoSideMargins = true; myAxisY.Tickmarks.Visible = false; myAxisY.Tickmarks.MinorVisible = false; SecondaryAxisY myRateAxisY = myDiagram.SecondaryAxesY[0]; myRateAxisY.WholeRange.AutoSideMargins = true; myRateAxisY.Tickmarks.Visible = true; myRateAxisY.Tickmarks.MinorVisible = false; }
public static Series CreateSeries(string typechar, Dictionary <string, string> diction) { Series ser = null; Dictionary <string, string> dicts = diction; switch (typechar) { case "柱状图": ser = new Series("", ViewType.Bar); break; case "线状图": ser = new Series("", ViewType.Line); break; default: ser = new Series("", ViewType.Bar); break; } ser.ArgumentScaleType = ScaleType.Qualitative; foreach (var item in dicts) { SeriesPoint sp = new SeriesPoint(item.Key, item.Value); ser.Points.Add(sp); } SecondaryAxisY sy = new SecondaryAxisY(); sy.GridSpacing = 1; return(ser); }
protected virtual void AddYAxes(ChartData <TX, TY> chartData, XYDiagram diagram, bool showPaneCaptioninAxisCaption = true) { diagram.SecondaryAxesY.Clear(); if (!chartData.Panes.Any()) { return; } //only one pane if (chartData.Panes.Count == 1) { diagram.AxisY.Visibility = DefaultBoolean.True; diagram.AxisY.GridLines.Visible = true; initializeAxis(diagram.AxisY, chartData.Panes.First().Axis); } else { foreach (var paneData in chartData.Panes) { var yAxis = new SecondaryAxisY(paneData.Id); initializeAxis(yAxis, paneData.Axis); diagram.SecondaryAxesY.Add(yAxis); } purgeMultipleSameAxisTitles(diagram); diagram.AxisY.Visibility = DefaultBoolean.False; diagram.AxisY.GridLines.Visible = false; } }
private XYDiagramPaneBase CheckAddPanel(StrategyDataItemInfo info) { XYDiagram diagram = (XYDiagram)Chart.Diagram; if (diagram == null) { return(null); } diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false; if (info.PanelName == "Default") { return(diagram.DefaultPane); } XYDiagramPane pane = null; if (diagram.Panes[info.PanelName] != null) { pane = diagram.Panes[info.PanelName]; } IResizeableArray items = GetDataSource(info) as IResizeableArray; if (items != null && !(GetArgumentValue(info, items.GetItem(0)) is DateTime)) { if (info.PanelName == "Default") { } else { SecondaryAxisX axisX = new SecondaryAxisX(); axisX.Name = info.AxisXName; diagram.SecondaryAxesX.Add(axisX); } } if (pane == null || info.Reversed) { SecondaryAxisY axis = new SecondaryAxisY(); axis.Assign(diagram.AxisY); axis.Name = info.AxisYName; axis.Reverse = info.Reversed; diagram.SecondaryAxesY.Add(axis); } if (pane == null) { pane = new XYDiagramPane() { Name = info.PanelName }; diagram.Panes.Add(pane); Legend l = new Legend(); l.Assign(Chart.Legend); l.Name = info.PanelName; l.DockTarget = pane; Chart.Legends.Add(l); } if (!info.PanelVisible) { pane.Visibility = ChartElementVisibility.Hidden; } return(pane); }
public static Series CreateSeries(string typechar, Dictionary<string, string> diction) { Series ser = null; Dictionary<string, string> dicts = diction; switch (typechar) { case "柱状图": ser = new Series("", ViewType.Bar); break; case "线状图": ser = new Series("", ViewType.Line); break; default: ser = new Series("", ViewType.Bar); break; } ser.ArgumentScaleType = ScaleType.Qualitative; foreach (var item in dicts) { SeriesPoint sp = new SeriesPoint(item.Key, item.Value); ser.Points.Add(sp); } SecondaryAxisY sy = new SecondaryAxisY(); sy.GridSpacing = 1; return ser; }
/// <summary> /// 创建图表的第二坐标系 /// </summary> /// <param name="series">Series对象</param> /// <returns></returns> private SecondaryAxisY CreateAxisY(Series series, string viewType) { SecondaryAxisY myAxis = new SecondaryAxisY(series.Name); ((XYDiagram)WebChartControl1.Diagram).SecondaryAxesY.Add(myAxis); switch (viewType) { case "Bar": ((BarSeriesView)series.View).AxisY = myAxis; break; case "Line": ((LineSeriesView)series.View).AxisY = myAxis; break; default: break; } myAxis.Title.Text = series.Name; myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐 myAxis.Title.Visible = true; //显示标题 myAxis.Title.Font = new Font("宋体", 9.0f); Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致 myAxis.Title.TextColor = color; myAxis.Label.TextColor = color; myAxis.Color = color; return(myAxis); }
public static void AddSecondaryAxisY(this ChartControl chart, List <Series> seriesList) { chart.Series.AddRange(seriesList.ToArray()); // Create two secondary axes, and add them to the chart's Diagram. SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis"); if (chart.Diagram == null) { return; } ((XYDiagram)chart.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)chart.Diagram).SecondaryAxesY.Add(myAxisY); // Assign the series2 to the created axes. string names = ""; foreach (var item in seriesList) { ((LineSeriesView)item.View).AxisY = myAxisY; names += " " + item.Name; } // Customize the appearance of the secondary axes (optional). myAxisY.Title.Text = names; myAxisY.Title.Visibility = DefaultBoolean.True; myAxisY.Title.TextColor = Color.Blue; myAxisY.Label.TextColor = Color.Blue; myAxisY.Color = Color.Blue; }
private void Form1_Load(object sender, EventArgs e) { // Create a new chart. ChartControl chartControl1 = new ChartControl(); // Create two series. Series series1 = new Series("Series 1", ViewType.Bar); Series series2 = new Series("Series 2", ViewType.Line); // Add points to them, with their arguments different. series1.Points.Add(new SeriesPoint("A", 10)); series1.Points.Add(new SeriesPoint("B", 12)); series1.Points.Add(new SeriesPoint("C", 17)); series1.Points.Add(new SeriesPoint("D", 14)); series2.Points.Add(new SeriesPoint("I", 1500)); series2.Points.Add(new SeriesPoint("II", 1800)); series2.Points.Add(new SeriesPoint("III", 2500)); series2.Points.Add(new SeriesPoint("IV", 3300)); // Add both series to the chart. chartControl1.Series.AddRange(new Series[] { series1, series2 }); // Hide the legend (optional). chartControl1.Legend.Visible = false; // Create two secondary axes, and add them to the chart's Diagram. SecondaryAxisX myAxisX = new SecondaryAxisX("my X-Axis"); SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis"); ((XYDiagram)chartControl1.Diagram).SecondaryAxesX.Add(myAxisX); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY); // Assign the series2 to the created axes. ((LineSeriesView)series2.View).AxisX = myAxisX; ((LineSeriesView)series2.View).AxisY = myAxisY; // Customize the appearance of the secondary axes (optional). myAxisX.Title.Text = "A Secondary X-Axis"; myAxisX.Title.Visible = true; myAxisX.Title.TextColor = Color.Red; myAxisX.Label.TextColor = Color.Red; myAxisX.Color = Color.Red; myAxisY.Title.Text = "A Secondary Y-Axis"; myAxisY.Title.Visible = true; myAxisY.Title.TextColor = Color.Blue; myAxisY.Label.TextColor = Color.Blue; myAxisY.Color = Color.Blue; // Add the chart to the form. chartControl1.Dock = DockStyle.Fill; this.Controls.Add(chartControl1); }
public void Plot(IProtocolChartData dataToPlot) { Clear(); chart.DataSource = dataToPlot.DataTable; chart.SeriesDataMember = dataToPlot.GroupingName; chart.InitializeColor(); // Specify the date-time argument scale type for the series, // as it is qualitative, by default. chart.SeriesTemplate.ArgumentScaleType = ScaleType.Numerical; chart.SeriesTemplate.ArgumentDataMember = dataToPlot.XValue; chart.SeriesTemplate.ValueScaleType = ScaleType.Numerical; chart.SeriesTemplate.ValueDataMembers.AddRange(new[] { dataToPlot.YValue }); chart.SeriesTemplate.LabelsVisibility = DefaultBoolean.False; chart.SeriesTemplate.View = new StackedBarSeriesView(); var diagram = (XYDiagram)chart.Diagram; ////// Access the type-specific options of the diagram. diagram.AxisX.Title.Text = XAxisTitle; diagram.AxisX.Title.Visibility = DefaultBoolean.True; diagram.AxisY.Title.Text = YAxisTitle; diagram.AxisY.Title.Visibility = DefaultBoolean.True; diagram.AxisX.WholeRange.Auto = true; diagram.AxisX.WholeRange.SetMinMaxValues(dataToPlot.XMin - BarWidth, dataToPlot.XMax + BarWidth); chart.Legend.LegendPosition(LegendPositions.RightInside); diagram.SecondaryAxesY.Clear(); SecondaryAxisY axisY2 = null; if (dataToPlot.NeedsMultipleAxis) { axisY2 = new SecondaryAxisY("Y2"); diagram.SecondaryAxesY.Add(axisY2); axisY2.Title.Text = Y2AxisTitle; axisY2.Title.Visibility = DefaultBoolean.True; } foreach (Series series in chart.Series) { var view = ((BarSeriesView)series.View); view.BarWidth = BarWidth; if (dataToPlot.NeedsMultipleAxis) { if (dataToPlot.SeriesShouldBeOnSecondAxis(series.Name)) { view.AxisY = axisY2; } } series.Visible = true; } }
internal static AxisBase GetSecondaryAxis(Diagram diagram, ChartAxisType axisType, string name) { switch (diagram) { case XYDiagram xyDiagram: switch (axisType) { case ChartAxisType.X: var resultX = new SecondaryAxisX(name); xyDiagram.SecondaryAxesX.Add(resultX); return(resultX); case ChartAxisType.Y: var resultY = new SecondaryAxisY(name); xyDiagram.SecondaryAxesY.Add(resultY); return(resultY); } break; case SwiftPlotDiagram swiftPlotDiagram: switch (axisType) { case ChartAxisType.X: var resultX = new SwiftPlotDiagramSecondaryAxisX(name); swiftPlotDiagram.SecondaryAxesX.Add(resultX); return(resultX); case ChartAxisType.Y: var resultY = new SwiftPlotDiagramSecondaryAxisY(name); swiftPlotDiagram.SecondaryAxesY.Add(resultY); return(resultY); } break; case XYDiagram3D _: throw new Exception("3D charts do not support secondary axes."); case RadarDiagram _: throw new Exception("Radar chart does not support secondary axes."); case SimpleDiagram _: throw new Exception("Pie chart does not support axes."); case SimpleDiagram3D _: throw new Exception("Pie chart does not support axes."); } throw new Exception("Current chart does not support axes."); }
public void _图表ByDt(ChartControl chartControl, ViewType viewType, DataTable dataSource, string xField, string[] yFields, string[] secondyFields) { // 十字 里面 chartControl.SetCrosshair(true); // 设置是否显示十字标 chartControl.Legend.Direction = LegendDirection.LeftToRight; // 说明文字 chartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Left; // 说明文字 chartControl.Legend.AlignmentVertical = LegendAlignmentVertical.Top; // 说明文字 if (yFields != null) { // 添加 第一个y轴 for (int i = 0; i < yFields.Length; i++) { Series _baseSeries = new Series(yFields[i], viewType); _baseSeries.ArgumentDataMember = xField; _baseSeries.ValueDataMembers.AddRange(yFields[i]); _baseSeries.DataSource = dataSource; _baseSeries.LegendTextPattern = "{S}"; _baseSeries.Visible = true; chartControl.Series.Add(_baseSeries); } } if (secondyFields == null) { return; } if (chartControl.Diagram == null) { return; } ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Clear(); for (int i = 0; i < secondyFields.Length; i++) { Series _baseSeries = new Series(secondyFields[i], viewType); _baseSeries.ArgumentDataMember = xField; _baseSeries.ValueDataMembers.AddRange(secondyFields[i]); _baseSeries.DataSource = dataSource; _baseSeries.LegendTextPattern = "{S}"; _baseSeries.Visible = true; // 定义 第二y轴 SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis"); ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(myAxisY); ((LineSeriesView)_baseSeries.View).AxisY = myAxisY; chartControl.Series.Add(_baseSeries); } }
private XYDiagramPaneBase CheckAddPanel(StrategyDataItemInfo info) { XYDiagram diagram = (XYDiagram)Chart.Diagram; if (diagram == null) { return(null); } diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false; if (info.PanelName == "Default") { return(diagram.DefaultPane); } XYDiagramPane pane = null; if (diagram.Panes[info.PanelName] != null) { pane = diagram.Panes[info.PanelName]; } if (pane == null || info.Reversed) { SecondaryAxisY axis = new SecondaryAxisY(); axis.Assign(diagram.AxisY); axis.Name = info.AxisYName; axis.Reverse = info.Reversed; diagram.SecondaryAxesY.Add(axis); } if (pane == null) { pane = new XYDiagramPane() { Name = info.PanelName }; diagram.Panes.Add(pane); Legend l = new Legend(); l.Assign(Chart.Legend); l.Name = info.PanelName; l.DockTarget = pane; Chart.Legends.Add(l); } if (!info.PanelVisible) { pane.Visibility = ChartElementVisibility.Hidden; } return(pane); }
public void BindIterationChart(List <ProjectSummary> dataSource) { IterationChartBar.Series.Clear(); BarSeriesView effortbarView = new SideBySideBarSeriesView(); Series effortSeries = new Series(); effortSeries.Name = Properties.Resources.colSumEffort; effortSeries.ShowInLegend = true; effortSeries.View = effortbarView; Series inputEffortRateSeries = CreateLineSeries(Properties.Resources.colInputEffortRate, NumericFormat.Percent); foreach (var item in dataSource) { SeriesPoint effortSeriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.SumEffort)) }); effortSeries.Points.Add(effortSeriesPoint); SeriesPoint inputEffortRateSeriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.SumInputEffortRate)) }); inputEffortRateSeries.Points.Add(inputEffortRateSeriesPoint); } IterationChartBar.Series.Add(effortSeries); IterationChartBar.Series.Add(inputEffortRateSeries); XYDiagram diagram = IterationChartBar.Diagram as XYDiagram; if (diagram == null) { return; } diagram.AxisY.Title.Visible = true; diagram.AxisY.Title.Text = Properties.Resources.WorkUnit; if (diagram.SecondaryAxesY.Count <= 0) { SecondaryAxisY secondAxisY = new SecondaryAxisY(); diagram.SecondaryAxesY.Add(secondAxisY); } LineSeriesView inputEffortRateView = inputEffortRateSeries.View as LineSeriesView; if (inputEffortRateView != null) { inputEffortRateView.AxisY = diagram.SecondaryAxesY[0]; } }
/// <summary> /// 创建图表的第二坐标系 /// </summary> /// <param name="series">Series对象</param> /// <returns></returns> private SecondaryAxisY CreateAxisY(Series series) { SecondaryAxisY myAxis = new SecondaryAxisY(series.Name); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxis); ((LineSeriesView)series.View).AxisY = myAxis; myAxis.Title.Text = series.Name; myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐 myAxis.Title.Visible = true; //显示标题 myAxis.Title.Font = new Font("宋体", 9.0f); Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致 myAxis.Title.TextColor = color; myAxis.Label.TextColor = color; myAxis.Color = color; return(myAxis); }
private SecondaryAxisY CreateAxisY(Series series) { SecondaryAxisY myAxis = new SecondaryAxisY(series.Name); ((XYDiagram)chartCYPM.Diagram).SecondaryAxesY.Add(myAxis); ((XYDiagram)chartCYPM.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)chartCYPM.Diagram).SecondaryAxesY.Add(myAxis); ((BarSeriesView)series.View).AxisY = myAxis; myAxis.Title.Text = series.Name; myAxis.Title.Alignment = StringAlignment.Center; //顶部对齐 myAxis.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; //显示标题 myAxis.Title.Font = new Font(new FontFamily("黑体"), 11); Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致 myAxis.Title.TextColor = color; myAxis.Label.TextColor = color; myAxis.Color = color; return(myAxis); }
public void Add2AxesYSeries(ChartControl chartControl, DataTable dt, string[] fieldN, string[] seriesN)//增加含有第二辅助Y轴的折线图 { for (int i = 0; i < fieldN.Count(); i++) { Series series = new Series(seriesN[i], ViewType.Line); series.DataSource = dt; series.ArgumentScaleType = ScaleType.DateTime; //x轴参数类型 series.ArgumentDataMember = "RTIME"; //x轴获取指定字段的列 series.ValueDataMembers.AddRange(fieldN[i]); //y轴获取指定字段的列 ((LineSeriesView)series.View).Color = COLORS2[i]; chartControl.Series.Add(series); } XYDiagram diagram = (XYDiagram)chartControl.Diagram; diagram.AxisY.WholeRange.Auto = true; diagram.SecondaryAxesY.Clear(); SecondaryAxisY secAxes = new SecondaryAxisY(chartControl.Series[2].Name); //增加第二辅助Y轴线 secAxes.WholeRange.Auto = true; ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(secAxes); ((LineSeriesView)chartControl.Series[2].View).AxisY = secAxes; secAxes.Title.Text = chartControl.Series[2].Name + "(m³)"; secAxes.Title.Alignment = StringAlignment.Far; //顶部对齐 secAxes.Title.Visible = true; //显示标题 secAxes.Title.Font = new Font("宋体", 9.0f); Color colorSecAxis = chartControl.Series[2].View.Color; //设置坐标的颜色和图表线条颜色一致 secAxes.Title.TextColor = colorSecAxis; secAxes.Label.TextColor = colorSecAxis; secAxes.Color = colorSecAxis; //chartControl.CrosshairOptions.ShowValueLabels = true; //移动鼠标时动态显示X轴数据标签 //chartControl.CrosshairOptions.ShowValueLine = true; //显示X轴线 //chartControl.CrosshairOptions.ValueLineColor = Color.Blue; }
public static void InitializeSeparatePaneIndicator(ChartControl chart, SeparatePaneIndicator separatePaneIndicator) { XYDiagram diagram = chart.Diagram as XYDiagram; if (diagram != null) { XYDiagramPane pane = new XYDiagramPane(separatePaneIndicator.Name + " Pane"); pane.Tag = separatePaneIndicator.Tag; diagram.Panes.Add(pane); SecondaryAxisY axisY = new SecondaryAxisY(separatePaneIndicator.Name + " Axis"); axisY.Tag = separatePaneIndicator.Tag; axisY.Alignment = AxisAlignment.Far; axisY.GridLines.Visible = true; axisY.GridLines.MinorVisible = true; axisY.WholeRange.AlwaysShowZeroLevel = false; diagram.SecondaryAxesY.Add(axisY); separatePaneIndicator.Pane = pane; separatePaneIndicator.AxisY = axisY; InitializeNewPaneLegend(chart, separatePaneIndicator); UpdateAxisXVisibilityInPanes(diagram); } }
public static void AddSecondaryAxisY(this ChartControl chart, Series series) { if (chart.Diagram == null) { return; } chart.Series.Add(series); SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis"); ((XYDiagram)chart.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)chart.Diagram).SecondaryAxesY.Add(myAxisY); // Assign the series2 to the created axes. ((LineSeriesView)series.View).AxisY = myAxisY; myAxisY.Title.Text = series.Name; myAxisY.Title.Visibility = DefaultBoolean.True; myAxisY.Title.TextColor = Color.Blue; myAxisY.Label.TextColor = Color.Blue; myAxisY.Color = Color.Blue; }
private void Form1_Load(object sender, EventArgs e) { PortDetailSetting(); btnDBOpen.Enabled = true; btnOpen.Enabled = false; btnClose.Enabled = false; DataTable(); SeriesDATA[0] = new Series("Temperature", ViewType.Line); SeriesDATA[1] = new Series("Humidity", ViewType.Line); SeriesDATA[2] = new Series("CO2", ViewType.Line); SeriesDATA[3] = new Series("Movement", ViewType.Line); chartControl.Series.Add(SeriesDATA[0]); chartControl.Series.Add(SeriesDATA[1]); chartControl.Series.Add(SeriesDATA[2]); chartControl.Series.Add(SeriesDATA[3]); XYDiagram diagram = (XYDiagram)chartControl.Diagram; diagram.AxisX.Label.TextPattern = "{A: HH:mm:ss}"; diagram.AxisX.DateTimeScaleOptions.ScaleMode = ScaleMode.Manual; diagram.AxisX.DateTimeScaleOptions.GridSpacing = 1; diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Second; diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Hour; ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Clear(); SecondaryAxisY secondAxisY = new SecondaryAxisY(); ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(secondAxisY); LineSeriesView lineView = new LineSeriesView(); lineView = (LineSeriesView)SeriesDATA[2].View; lineView.AxisY = secondAxisY; lineView.LineMarkerOptions.BorderVisible = false; }
private DevExpressAxis retrieveAxisView() { if (AxisType == AxisTypes.X) { return(xyDiagram.AxisX); } if (AxisType == AxisTypes.Y) { return(xyDiagram.AxisY); } int axisTypeIndex = (int)AxisType; const int secondaryAxisOffset = (int)AxisTypes.Y2; // create yN-Axis, if necessary, and also the preceding yN-Axes for (int i = xyDiagram.SecondaryAxesY.Count; i <= axisTypeIndex - secondaryAxisOffset; i++) { var typeOfAxisView = EnumHelper.AllValuesFor <AxisTypes>().ElementAt(i + secondaryAxisOffset); var secondaryAxisY = new SecondaryAxisY(typeOfAxisView.ToString()); xyDiagram.SecondaryAxesY.Add(secondaryAxisY); } return(xyDiagram.SecondaryAxesY[axisTypeIndex - secondaryAxisOffset]); }
/// <summary> /// 创建图表的第二坐标系 /// </summary> /// <param name="series">Series对象</param> /// <returns></returns> private SecondaryAxisY CreateAxisY(Series series) { SecondaryAxisY myAxis = new SecondaryAxisY(series.Name); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxis); ((LineSeriesView)series.View).AxisY = myAxis; myAxis.Title.Text = series.Name; myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐 myAxis.Title.Visible = true; //显示标题 myAxis.Title.Font = new Font("宋体", 9.0f); Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致 myAxis.Title.TextColor = color; myAxis.Label.TextColor = color; myAxis.Color = color; return myAxis; }
private void BindingChartData() { try { this.Cursor = Cursors.WaitCursor; // chartControl1.Titles.Add(new ChartTitle { Text = "Real-Time Charting" }); dataPoints.Clear(); dt = SEL_SMT_INST_SET_CHART(ComVar.Var._strValue1, ComVar.Var._strValue2); BindingGridData(dt); DevExpress.XtraCharts.LineSeriesView lineSeriesView1 = new DevExpress.XtraCharts.LineSeriesView(); DevExpress.XtraCharts.LineSeriesView lineSeriesView2 = new DevExpress.XtraCharts.LineSeriesView(); DevExpress.XtraCharts.LineSeriesView lineSeriesView3 = new DevExpress.XtraCharts.LineSeriesView(); DevExpress.XtraCharts.LineSeriesView lineSeriesView4 = new DevExpress.XtraCharts.LineSeriesView(); DevExpress.XtraCharts.PointSeriesLabel pointSeriesLabel4 = new DevExpress.XtraCharts.PointSeriesLabel(); Series series = new Series("Upper", ViewType.Line); series.ChangeView(ViewType.Line); series.DataSource = dataPoints; series.ArgumentDataMember = "sArgument"; series.ValueDataMembers.AddRange("UP_QTY"); series.CrosshairLabelPattern = "{V:#,#} Prs"; //format //lineSeriesView1.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; lineSeriesView1.LineStyle.Thickness = 2; series.View = lineSeriesView1; Series series2 = new Series("Finish Sole", ViewType.Line); series2.ChangeView(ViewType.Line); series2.DataSource = dataPoints; series2.ArgumentDataMember = "sArgument"; series2.ValueDataMembers.AddRange("FS_QTY"); series2.CrosshairLabelPattern = "{V:#,#} Prs"; //format // lineSeriesView2.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; lineSeriesView2.Color = Color.Gray; lineSeriesView2.LineStyle.Thickness = 2; series2.View = lineSeriesView2; Series series3 = new Series("Set Balance", ViewType.Line); series3.ChangeView(ViewType.Line); series3.DataSource = dataPoints; series3.ArgumentDataMember = "sArgument"; series3.ValueDataMembers.AddRange("SET_QTY"); series3.CrosshairLabelPattern = "{V:#,#} Prs"; //format // lineSeriesView3.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; lineSeriesView3.LineStyle.Thickness = 2; series3.View = lineSeriesView3; Series series4 = new Series("Set Ratio", ViewType.Line); series4.ChangeView(ViewType.Line); series4.DataSource = dataPoints; series4.ArgumentDataMember = "sArgument"; series4.ValueDataMembers.AddRange("RATIO"); series4.CrosshairLabelPattern = "{V:#.0}%"; //pointSeriesLabel4.TextPattern = "{V:#.0}%"; series4.LabelsVisibility = DefaultBoolean.True; //format lineSeriesView4.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; lineSeriesView4.LineStyle.Thickness = 4; lineSeriesView4.Color = Color.Orange; series4.View = lineSeriesView4; XYDiagram diagram = (XYDiagram)chartControl1.Diagram; diagram.AxisX.Label.ResolveOverlappingOptions.AllowRotate = false; diagram.AxisX.Label.ResolveOverlappingOptions.AllowStagger = false; diagram.AxisX.WholeRange.SideMarginsValue = 0; diagram.DependentAxesYRange = DefaultBoolean.True; diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false; diagram.AxisY.Title.Text = "Qty (Prs)"; diagram.AxisY.Title.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); diagram.AxisY.Title.TextColor = Color.Blue; diagram.AxisY.Title.Visibility = DefaultBoolean.True; diagram.AxisY.Color = Color.DodgerBlue; diagram.AxisY.Label.TextPattern = "{V:#,#}"; diagram.AxisY.Label.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); diagram.AxisY.Interlaced = true; chartControl1.Series.Clear(); chartControl1.SeriesSerializable = new DevExpress.XtraCharts.Series[] { series, series2, series3, series4 }; //ADD SECONDARY AXISY SecondaryAxisY myAxisY = new SecondaryAxisY("my X-Axis"); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY); ((LineSeriesView)series4.View).AxisY = myAxisY; myAxisY.WholeRange.SideMarginsValue = 0; myAxisY.WholeRange.MinValue = 0; myAxisY.WholeRange.MaxValue = 100; myAxisY.Title.Text = "Set Ratio (%)"; myAxisY.Title.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); myAxisY.Title.TextColor = Color.Orange; myAxisY.Title.Visibility = DefaultBoolean.True; myAxisY.Label.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); myAxisY.Color = Color.Orange; //legend chartControl1.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Center; chartControl1.Legend.AlignmentVertical = DevExpress.XtraCharts.LegendAlignmentVertical.TopOutside; chartControl1.Legend.Direction = DevExpress.XtraCharts.LegendDirection.LeftToRight; chartControl1.Legend.Name = "Default Legend"; chartControl1.Legend.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); chartControl1.Legend.Visibility = DefaultBoolean.True; if (dt != null && dt.Rows.Count <= ViewportPointCount) { for (int i = 0; i < dt.Rows.Count; i++) { string setTime1 = dt.Rows[i]["SET_TIME"].ToString(); int UP_QTY1 = Convert.ToInt32(dt.Rows[i]["UP_QTY"]); int FS_QTY1 = Convert.ToInt32(dt.Rows[i]["FS_QTY"]); int SET_QTY1 = Convert.ToInt32(dt.Rows[i]["SET_QTY"]); double RATIO1 = Convert.ToDouble(dt.Rows[i]["SET_RATIO"]); dataPoints.Add(new DataRealPoint(setTime1, UP_QTY1, FS_QTY1, SET_QTY1, RATIO1)); } isLoop = true; tmrDelay.Start(); } else { isLoop = false; timer1.Start(); } this.Cursor = Cursors.Default; } catch { this.Cursor = Cursors.Default; } }
protected void AssignCurveSeriesList(IEnumerable <Series> seriesList, XYDiagramPane pane, SecondaryAxisY axisY) { foreach (var series in seriesList) { var view = series.View.DowncastTo <XYDiagramSeriesViewBase>(); view.Pane = pane; view.AxisY = axisY; } }
private void ConfigureIndicatorCharts(ChartSettings chartSettings) { var indicatorSeriesSettingsSet = new List <IndicatorSeriesColorSettings>(); var indicatorAddtionalPanels = IndicatorPanelSettings.GetAdditionalPanelsSettings(chartSettings.Period); //Build Series var viewSettingsByIndicatorType = IndicatorSeriesViewSettings.GetIndicatorSeriesViewSettings(chartSettings) .GroupBy(viewSettings => new { viewSettings.IndicatorType, viewSettings.CandlePeriod }); foreach (var seriesViewSettings in viewSettingsByIndicatorType) { var indicatorSerieses = new List <Series>(); var seriesViews = new List <SeriesViewColorEachSupportBase>(); foreach (var viewSettings in seriesViewSettings) { SeriesViewColorEachSupportBase seriesView; switch (viewSettings.ViewType) { case ViewType.Line: seriesView = new LineSeriesView(); break; case ViewType.Bar: seriesView = new StackedBarSeriesView(); break; case ViewType.Point: seriesView = new PointSeriesView(); break; default: throw new ArgumentOutOfRangeException(nameof(viewSettings.ViewType)); } var seriesSettings = new IndicatorSeriesColorSettings { IndicatorType = seriesViewSettings.Key.IndicatorType, CandlePeriod = seriesViewSettings.Key.CandlePeriod, }; var availableColors = IndicatorSeriesColorSettings.AvailableSeriesColors .Where(color => indicatorSeriesSettingsSet .Where(s => s.IndicatorType == seriesViewSettings.Key.IndicatorType && s.CandlePeriod == seriesViewSettings.Key.CandlePeriod) .All(s => s.SeriesColor != color)) .ToList(); seriesSettings.SeriesColor = availableColors.Any() ? availableColors.First() : IndicatorSeriesColorSettings.LastDefaultColor; indicatorSeriesSettingsSet.Add(seriesSettings); seriesView.Color = seriesSettings.SeriesColor; seriesViews.Add(seriesView); var indicatorSeries = new Series(viewSettings.IndicatorValue, viewSettings.ViewType); indicatorSeries.ArgumentScaleType = ScaleType.DateTime; indicatorSeries.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; indicatorSeries.ArgumentDataMember = "Moment"; indicatorSeries.ValueDataMembers.AddRange(viewSettings.IndicatorValue); indicatorSeries.View = seriesView; indicatorSerieses.Add(indicatorSeries); } var panelSettings = indicatorAddtionalPanels.FirstOrDefault(s => s.AssignedIndicators.Any(tuple => tuple.Item1 == seriesViewSettings.Key.IndicatorType && tuple.Item2 == seriesViewSettings.Key.CandlePeriod)); if (panelSettings != null) { if (panelSettings.Panel == null || panelSettings.AxisY == null) { var pane = new XYDiagramPane(); ((XYDiagram)chartControl.Diagram).Panes.Add(pane); panelSettings.Panel = pane; var axisY = new SecondaryAxisY(); ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(axisY); panelSettings.AxisY = axisY; } foreach (var seriesView in seriesViews) { seriesView.Pane = panelSettings.Panel; seriesView.AxisY = panelSettings.AxisY; } } else { foreach (var seriesView in seriesViews) { seriesView.Pane = ((XYDiagram)chartControl.Diagram).DefaultPane; seriesView.AxisY = ((XYDiagram)chartControl.Diagram).AxisY; } } chartControl.Series.AddRange(indicatorSerieses.ToArray()); } }
private void InitChartControl() { //Series series1 = new Series("1", ViewType.Line); //for (int rowIdx = 0; rowIdx < 10; rowIdx++) //{ // series1.Points.Add(new SeriesPoint(rowIdx, rowIdx)); //} //Series series2 = new Series("1", ViewType.Line); //for (int rowIdx = 0; rowIdx < 10; rowIdx++) //{ // series2.Points.Add(new SeriesPoint(rowIdx, rowIdx + 10)); //} //Series series3 = new Series("1", ViewType.Line); //for (int rowIdx = 0; rowIdx < 10; rowIdx++) //{ // series3.Points.Add(new SeriesPoint(rowIdx, rowIdx + 20)); //} XYDiagram xyDiagram1 = new XYDiagram(); var xyDiagramPane1 = new XYDiagramPane(); SecondaryAxisY secondaryAxisY1 = new SecondaryAxisY(); Series series1 = new Series(); PointSeriesLabel pointSeriesLabel1 = new PointSeriesLabel(); SeriesPoint seriesPoint1 = new SeriesPoint(new DateTime(2008, 6, 11, 6, 0, 0, 0), new object[] { ((object)(56.48D)) }); SeriesPoint seriesPoint2 = new SeriesPoint(new DateTime(2008, 6, 11, 3, 0, 0, 0), new object[] { ((object)(53.78D)) }); LineSeriesView lineSeriesView1 = new LineSeriesView(); Series series2 = new Series(); PointSeriesLabel pointSeriesLabel2 = new PointSeriesLabel(); SeriesPoint seriesPoint3 = new SeriesPoint(new DateTime(2008, 6, 11, 6, 0, 0, 0), new object[] { ((object)(1023D)) }); SeriesPoint seriesPoint4 = new SeriesPoint(new System.DateTime(2008, 6, 11, 3, 0, 0, 0), new object[] { ((object)(1021D)) }); AreaSeriesView areaSeriesView1 = new AreaSeriesView(); ChartTitle chartTitle1 = new ChartTitle(); ((ISupportInitialize)(chartControl4)).BeginInit(); ((ISupportInitialize)(xyDiagram1)).BeginInit(); ((ISupportInitialize)(xyDiagramPane1)).BeginInit(); ((ISupportInitialize)(secondaryAxisY1)).BeginInit(); ((ISupportInitialize)(series1)).BeginInit(); ((ISupportInitialize)(pointSeriesLabel1)).BeginInit(); ((ISupportInitialize)(lineSeriesView1)).BeginInit(); ((ISupportInitialize)(series2)).BeginInit(); ((ISupportInitialize)(pointSeriesLabel2)).BeginInit(); ((ISupportInitialize)(areaSeriesView1)).BeginInit(); this.SuspendLayout(); chartControl4.AutoLayout = false; chartControl4.CrosshairOptions.ArgumentLineColor = System.Drawing.Color.DeepSkyBlue; chartControl4.CrosshairOptions.ArgumentLineStyle.Thickness = 2; chartControl4.CrosshairOptions.GroupHeaderPattern = "{A:d MMMM, H:mm}"; chartControl4.CrosshairOptions.ShowOnlyInFocusedPane = false; chartControl4.DataBindings = null; xyDiagram1.AxisX.DateTimeScaleOptions.AutoGrid = false; xyDiagram1.AxisX.DateTimeScaleOptions.GridAlignment = DevExpress.XtraCharts.DateTimeGridAlignment.Hour; xyDiagram1.AxisX.DateTimeScaleOptions.GridSpacing = 6D; xyDiagram1.AxisX.DateTimeScaleOptions.MeasureUnit = DevExpress.XtraCharts.DateTimeMeasureUnit.Hour; xyDiagram1.AxisX.GridLines.Visible = true; xyDiagram1.AxisX.Interlaced = true; xyDiagram1.AxisX.Label.Staggered = true; xyDiagram1.AxisX.Label.TextPattern = "{A:dd/MM HH:mm}"; xyDiagram1.AxisX.Title.Text = "Date"; xyDiagram1.AxisX.VisibleInPanesSerializable = ""; xyDiagram1.AxisX.VisualRange.Auto = false; xyDiagram1.AxisX.VisualRange.MaxValueSerializable = "06/11/2008 06:00:00.000"; xyDiagram1.AxisX.VisualRange.MinValueSerializable = "06/11/2008 03:00:00.000"; xyDiagram1.AxisY.GridLines.MinorVisible = true; xyDiagram1.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 10F); xyDiagram1.AxisY.Title.Text = "Temperature, F"; xyDiagram1.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; xyDiagram1.AxisY.VisibleInPanesSerializable = "-1"; xyDiagram1.AxisY.WholeRange.AlwaysShowZeroLevel = false; xyDiagram1.DefaultPane.ScrollBarOptions.XAxisScrollBarVisible = false; xyDiagram1.DefaultPane.ScrollBarOptions.YAxisScrollBarVisible = false; xyDiagram1.DefaultPane.Weight = 2D; xyDiagram1.EnableAxisXScrolling = true; xyDiagram1.PaneDistance = 4; xyDiagramPane1.Name = "Pane 1"; xyDiagramPane1.PaneID = 0; xyDiagramPane1.ScrollBarOptions.XAxisScrollBarVisible = false; xyDiagramPane1.ScrollBarOptions.YAxisScrollBarVisible = false; xyDiagram1.Panes.AddRange(new DevExpress.XtraCharts.XYDiagramPane[] { xyDiagramPane1 }); secondaryAxisY1.Alignment = DevExpress.XtraCharts.AxisAlignment.Near; secondaryAxisY1.AxisID = 0; secondaryAxisY1.GridLines.MinorVisible = true; secondaryAxisY1.GridLines.Visible = true; secondaryAxisY1.Name = "secondaryAxisY1"; secondaryAxisY1.NumericScaleOptions.AutoGrid = false; secondaryAxisY1.NumericScaleOptions.GridSpacing = 4D; secondaryAxisY1.Title.Font = new System.Drawing.Font("Tahoma", 10F); secondaryAxisY1.Title.Text = "Pressure, mbar"; secondaryAxisY1.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; secondaryAxisY1.VisibleInPanesSerializable = "0"; secondaryAxisY1.VisualRange.Auto = false; secondaryAxisY1.VisualRange.AutoSideMargins = false; secondaryAxisY1.VisualRange.MaxValueSerializable = "1025"; secondaryAxisY1.VisualRange.MinValueSerializable = "1014"; secondaryAxisY1.VisualRange.SideMarginsValue = 0D; secondaryAxisY1.WholeRange.AlwaysShowZeroLevel = false; secondaryAxisY1.WholeRange.Auto = false; secondaryAxisY1.WholeRange.AutoSideMargins = false; secondaryAxisY1.WholeRange.MaxValueSerializable = "1025"; secondaryAxisY1.WholeRange.MinValueSerializable = "1014"; secondaryAxisY1.WholeRange.SideMarginsValue = 0D; xyDiagram1.SecondaryAxesY.AddRange(new DevExpress.XtraCharts.SecondaryAxisY[] { secondaryAxisY1 }); chartControl4.Diagram = xyDiagram1; chartControl4.Dock = System.Windows.Forms.DockStyle.Fill; chartControl4.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Left; chartControl4.Legend.AlignmentVertical = DevExpress.XtraCharts.LegendAlignmentVertical.BottomOutside; chartControl4.Legend.Direction = DevExpress.XtraCharts.LegendDirection.LeftToRight; chartControl4.Legend.Name = "Default Legend"; chartControl4.Location = new System.Drawing.Point(0, 0); chartControl4.Name = "chart04"; series1.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime; pointSeriesLabel1.Angle = 90; series1.Label = pointSeriesLabel1; series1.Name = "Temperature (F)"; series1.Points.AddRange(new DevExpress.XtraCharts.SeriesPoint[] { seriesPoint1, seriesPoint2 }); series1.View = lineSeriesView1; series2.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime; pointSeriesLabel2.Angle = 90; pointSeriesLabel2.LineLength = 5; series2.Label = pointSeriesLabel2; series2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; series2.Name = "Pressure (mbar)"; series2.Points.AddRange(new DevExpress.XtraCharts.SeriesPoint[] { seriesPoint3, seriesPoint4 }); areaSeriesView1.AxisYName = "secondaryAxisY1"; areaSeriesView1.MarkerVisibility = DevExpress.Utils.DefaultBoolean.False; areaSeriesView1.PaneName = "Pane 1"; areaSeriesView1.Transparency = ((byte)(0)); series2.View = areaSeriesView1; this.chartControl4.SeriesSerializable = new DevExpress.XtraCharts.Series[] { series1, series2 }; chartControl4.Size = new System.Drawing.Size(1333, 548); chartControl4.TabIndex = 3; chartTitle1.Text = "Weather in London"; chartControl4.Titles.AddRange(new DevExpress.XtraCharts.ChartTitle[] { chartTitle1 }); chartControl4.ToolTipOptions.ShowForPoints = false; ((ISupportInitialize)(xyDiagramPane1)).EndInit(); ((ISupportInitialize)(secondaryAxisY1)).EndInit(); ((ISupportInitialize)(xyDiagram1)).EndInit(); ((ISupportInitialize)(pointSeriesLabel1)).EndInit(); ((ISupportInitialize)(lineSeriesView1)).EndInit(); ((ISupportInitialize)(series1)).EndInit(); ((ISupportInitialize)(pointSeriesLabel2)).EndInit(); ((ISupportInitialize)(areaSeriesView1)).EndInit(); ((ISupportInitialize)(series2)).EndInit(); ((ISupportInitialize)(this.chartControl4)).EndInit(); this.ResumeLayout(false); }
private void CreateChart(DataTable _dt, DevExpress.XtraCharts.ChartControl _chartControl) { try { _dt.Rows.RemoveAt(0); ((XYDiagram)_chartControl.Diagram).EnableAxisXZooming = true; //((XYDiagram)barChartControl.Diagram).AxisX.NumericScaleOptions.ScaleMode = DevExpress.XtraCharts.ScaleMode.Automatic; ((XYDiagram)_chartControl.Diagram).AxisX.VisualRange.Auto = false; ((XYDiagram)_chartControl.Diagram).AxisX.VisualRange.AutoSideMargins = false; ((XYDiagram)_chartControl.Diagram).AxisX.VisualRange.SideMarginsValue = 2; ((XYDiagram)_chartControl.Diagram).AxisX.Label.Angle = 0; ((XYDiagram)_chartControl.Diagram).AxisX.Label.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold); ((XYDiagram)_chartControl.Diagram).AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; ((XYDiagram)_chartControl.Diagram).AxisX.Title.Text = "Model"; ((XYDiagram)_chartControl.Diagram).AxisX.Title.Font = new Font("Calibri", 14F, System.Drawing.FontStyle.Bold); ((XYDiagram)_chartControl.Diagram).AxisY.Label.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold); ((XYDiagram)_chartControl.Diagram).AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; ((XYDiagram)_chartControl.Diagram).AxisY.Title.Text = " Inventory (Prs)"; ((XYDiagram)_chartControl.Diagram).AxisY.Label.TextPattern = "{V:###,###}"; ((XYDiagram)_chartControl.Diagram).AxisY.Title.Font = new Font("Calibri", 14F, System.Drawing.FontStyle.Bold); ((XYDiagram)_chartControl.Diagram).AxisY.Title.TextColor = Color.DarkOrange; ((XYDiagram)_chartControl.Diagram).AxisX.Title.TextColor = Color.DarkOrange; ((XYDiagram)_chartControl.Diagram).AxisX.Label.Angle = 50; DevExpress.XtraCharts.LineSeriesView splineSeriesView1 = new DevExpress.XtraCharts.LineSeriesView(); DevExpress.XtraCharts.SideBySideBarSeriesView sideBySideBarSeriesView1 = new DevExpress.XtraCharts.SideBySideBarSeriesView(); DevExpress.XtraCharts.XYSeriesUnwindAnimation xySeriesSlideAnimation1 = new DevExpress.XtraCharts.XYSeriesUnwindAnimation(); _chartControl.AnimationStartMode = DevExpress.XtraCharts.ChartAnimationMode.OnDataChanged; _chartControl.Series.Clear(); _chartControl.Titles.Clear(); Series series1 = new Series("Inventory", ViewType.Bar); Series series2 = new Series("Leadtime", ViewType.Line); Legend lgBox = new Legend(); lgBox.Visibility = DevExpress.Utils.DefaultBoolean.True; lgBox.Font = new Font("Calibri", 16F, System.Drawing.FontStyle.Bold); if (_dt != null && _dt.Rows.Count > 0) { for (int iRow = 0; iRow < _dt.Rows.Count; iRow++) { if (_dt.Rows[iRow]["INV_QTY"].ToString() != "") { series1.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), Convert.ToInt32(_dt.Rows[iRow]["INV_QTY"].ToString()))); } else { series1.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), 0)); } if (_dt.Rows[iRow]["LEADTIME"].ToString() != "") { series2.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), Convert.ToDouble(_dt.Rows[iRow]["LEADTIME"].ToString()))); } else { series2.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), 0)); } } } sideBySideBarSeriesView1.ColorEach = false; sideBySideBarSeriesView1.Shadow.Visible = false; series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; series1.Label.TextPattern = "{V:###,###}"; series1.ArgumentScaleType = ScaleType.Qualitative; series1.View = sideBySideBarSeriesView1; splineSeriesView1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); splineSeriesView1.LineStyle.Thickness = 2; splineSeriesView1.SeriesAnimation = xySeriesSlideAnimation1; splineSeriesView1.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; splineSeriesView1.LineMarkerOptions.Size = 15; splineSeriesView1.LineMarkerOptions.Color = Color.DodgerBlue; series2.Label.BackColor = Color.White; series2.Label.Font = new System.Drawing.Font("Calibri", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); series2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; series2.Label.TextPattern = "{V:##0.#}"; series2.ArgumentScaleType = ScaleType.Qualitative; series2.View = splineSeriesView1; // Access the type-specific options of the diagram. _chartControl.Series.AddRange(new Series[] { series1, series2 }); SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis"); //myAxisY.VisualRange.SetMinMaxValues(0, 20); myAxisY.Title.Text = "Leadtime (Days)"; myAxisY.Tickmarks.MinorVisible = true; //((XYDiagram)barChartControl.Diagram).AxisY.WholeRange.SetMinMaxValues(90, 100); myAxisY.Label.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); myAxisY.Title.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); myAxisY.Label.TextPattern = "{V:##0.##}"; myAxisY.Title.TextColor = Color.DarkOrange; myAxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; ((XYDiagram)_chartControl.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)_chartControl.Diagram).SecondaryAxesY.Add(myAxisY); ((LineSeriesView)series2.View).AxisY = myAxisY; // _chartControl.Legends.Add(lgBox); // Add a title to the chart (if necessary). // _chartControl.Titles.Add(new ChartTitle()); //_chartControl.Titles[0].Text = "Production"; } catch (Exception EX) { } }
public static void SetAxisYLabelPercent(this SecondaryAxisY y) { y.Label.TextPattern = "{V:P0}"; }
public frmQtyReport(string ad_user_id, string ad_org_id, DataTable dtProcess) { InitializeComponent(); dateEdit.DateTime = DateTime.Now; dateEdit1.DateTime = DateTime.Now; this.ad_user_id = ad_user_id; this.ad_org_id = ad_org_id; this.dtProcess = dtProcess; dtboPhan = BUS_BoPhan.LoadBoPhan(ad_org_id); utility.SearchProcess(this.Controls, dtProcess); dateEdit.DateTime = DateTime.Now; dateEdit1.DateTime = DateTime.Now; dateEdit2.DateTime = DateTime.Now; #region Chart control 1 // Create an empty Bar series and add it to the chart. chartControl1.Series.Add(series1); series1.View.Color = Color.Green; chartControl1.Series.Add(series2); series2.View.Color = Color.DarkGoldenrod; chartControl1.Series.Add(series3); series3.View.Color = Color.Red; //Show point view lable and customize it chartControl1.Series["Sản lượng mục tiêu"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; SideBySideBarSeriesLabel label1 = chartControl1.Series["Sản lượng mục tiêu"].Label as SideBySideBarSeriesLabel; if (label1 != null) { label1.Position = BarSeriesLabelPosition.Top; } chartControl1.Series["Sản lượng thực tế"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; SideBySideBarSeriesLabel label2 = chartControl1.Series["Sản lượng thực tế"].Label as SideBySideBarSeriesLabel; if (label2 != null) { label2.Position = BarSeriesLabelPosition.Top; } chartControl1.Series["Tỉ lệ đạt mục tiêu(%)"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; SideBySideBarSeriesLabel label3 = chartControl1.Series["Tỉ lệ đạt mục tiêu(%)"].Label as SideBySideBarSeriesLabel; if (label3 != null) { label3.Position = BarSeriesLabelPosition.Top; } // Cast Diagram to the XYDiagram type. XYDiagram diagram = chartControl1.Diagram as XYDiagram; diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; diagram.AxisY.Title.Text = "Sản lượng (k)"; diagram.AxisY.Title.Font = new Font("Times New Roman", 10, FontStyle.Regular); // Add a title to the chart (if necessary). chartTitle1.Text = "BIỂU ĐỒ SẢN LƯỢNG HẰNG NGÀY\n(" + DateTime.Now.ToString("dd/MM/yyyy") + ")"; chartTitle1.Font = new Font("Times New Roman", 15, FontStyle.Bold); chartControl1.Titles.Add(chartTitle1); // Control legend & position chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center; chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.BottomOutside; chartControl1.Legend.Direction = LegendDirection.LeftToRight; chartControl1.Legend.EquallySpacedItems = true; //Create secondary Y-Axis, and add them to the chart's diagram SecondaryAxisY myAxisY = new SecondaryAxisY("Y-Axis"); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY); //Assign series3 to the created axis ((LineSeriesView)series3.View).AxisY = myAxisY; //Customize the apperance of the secondary axis myAxisY.Title.Text = "Tỉ lệ đạt mục tiêu(%)"; myAxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; myAxisY.Title.TextColor = Color.Red; myAxisY.Title.Font = new Font("Times New Roman", 10, FontStyle.Regular); myAxisY.Label.TextColor = Color.Red; myAxisY.Color = Color.Red; #endregion #region Chart control 2 // Create an empty Bar series and add it to the chart. chartControl2.Series.Add(series4); series4.View.Color = Color.Green; chartControl2.Series.Add(series5); series5.View.Color = Color.DarkGoldenrod; chartControl2.Series.Add(series6); series6.View.Color = Color.Red; //Show point view lable and customize it chartControl2.Series["Sản lượng mục tiêu"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; SideBySideBarSeriesLabel label4 = chartControl2.Series["Sản lượng mục tiêu"].Label as SideBySideBarSeriesLabel; if (label4 != null) { label4.Position = BarSeriesLabelPosition.Top; } chartControl2.Series["Sản lượng thực tế"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; SideBySideBarSeriesLabel label5 = chartControl2.Series["Sản lượng thực tế"].Label as SideBySideBarSeriesLabel; if (label5 != null) { label5.Position = BarSeriesLabelPosition.Top; } //chartControl2.Series["Tỉ lệ đạt mục tiêu(%)"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; //SideBySideBarSeriesLabel label6 = chartControl2.Series["Tỉ lệ đạt mục tiêu(%)"].Label as SideBySideBarSeriesLabel; //if (label6 != null) //{ // label6.Position = BarSeriesLabelPosition.Top; //} // Cast Diagram to the XYDiagram type. XYDiagram diagram2 = chartControl2.Diagram as XYDiagram; diagram2.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; diagram2.AxisY.Title.Text = "Sản lượng (k)"; diagram2.AxisY.Title.Font = new Font("Times New Roman", 10, FontStyle.Regular); // Add a title to the chart (if necessary). chartTitle2.Text = "BIỂU ĐỒ SẢN LƯỢNG HẰNG THÁNG\n(" + "01/" + DateTime.Now.ToString("MM/yyyy") + " - " + DateTime.Now.ToString("dd/MM/yyyy") + ")"; chartTitle2.Font = new Font("Times New Roman", 15, FontStyle.Bold); chartControl2.Titles.Add(chartTitle2); // Control legend & position chartControl2.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; chartControl2.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center; chartControl2.Legend.AlignmentVertical = LegendAlignmentVertical.BottomOutside; chartControl2.Legend.Direction = LegendDirection.LeftToRight; chartControl2.Legend.EquallySpacedItems = true; //Create secondary Y-Axis, and add them to the chart's diagram SecondaryAxisY myAxisY2 = new SecondaryAxisY("Y-Axis2"); ((XYDiagram)chartControl2.Diagram).SecondaryAxesY.Add(myAxisY2); //Assign series3 to the created axis ((LineSeriesView)series6.View).AxisY = myAxisY2; //Customize the apperance of the secondary axis myAxisY2.Title.Text = "Tỉ lệ đạt mục tiêu(%)"; myAxisY2.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; myAxisY2.Title.TextColor = Color.Red; myAxisY2.Title.Font = new Font("Times New Roman", 10, FontStyle.Regular); myAxisY2.Label.TextColor = Color.Red; myAxisY2.Color = Color.Red; #endregion dtChart1 = BUS_SanXuat.ChartQtyDaily(DateTime.Now.ToString("yyyy-MM-dd"), ad_org_id); DateTime today = DateTime.Today; DateTime yesterday = today.AddDays(-1); lblQtyNgay.Text = "Sản lượng ngày trước (k): " + BUS_SanXuat.ChartQtyTotal(yesterday.ToString("yyyy-MM-dd"), yesterday.ToString("yyyy-MM-dd"), ad_org_id); CreateChart1(dtChart1); dtChart2 = BUS_SanXuat.ChartQtyMonthly(DateTime.Now.ToString("yyyy-MM-") + "01", DateTime.Now.ToString("yyyy-MM-dd"), ad_org_id); DateTime currentMonth = DateTime.Today; DateTime lastMonth = currentMonth.AddMonths(-1); lblQtyMonth.Text = "Sản lượng tháng trước (k): " + BUS_SanXuat.ChartQtyTotal(lastMonth.ToString("yyyy-MM-") + "01", lastMonth.ToString("yyyy-MM-") + "31", ad_org_id); CreateChart2(dtChart2); }
private void BindingPareto(DevExpress.XtraCharts.ChartControl charControl, DataTable dt, string iColPoint, string iColValue, string iColPercent, string _ChartTitle, string _sYTitle, string _sXTitle) { try { ((XYDiagram)charControl.Diagram).AxisX.NumericScaleOptions.AutoGrid = true; ((XYDiagram)charControl.Diagram).AxisX.Title.TextColor = Color.DarkOrange; ((XYDiagram)charControl.Diagram).AxisX.Title.Text = _sXTitle; ((XYDiagram)charControl.Diagram).AxisY.Title.TextColor = Color.DarkOrange; ((XYDiagram)charControl.Diagram).AxisY.Title.Text = _sYTitle; ((XYDiagram)charControl.Diagram).AxisX.Title.Font = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); ((XYDiagram)charControl.Diagram).AxisX.Label.Font = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); ((XYDiagram)charControl.Diagram).AxisY.Title.Font = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); ((XYDiagram)charControl.Diagram).AxisY.Label.Font = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); ((XYDiagram)charControl.Diagram).AxisX.Label.Angle = 50; DevExpress.XtraCharts.SideBySideBarSeriesView sideBySideBarSeriesView1 = new DevExpress.XtraCharts.SideBySideBarSeriesView(); DevExpress.XtraCharts.SplineSeriesView splineSeriesView1 = new DevExpress.XtraCharts.SplineSeriesView(); DevExpress.XtraCharts.XYSeriesUnwindAnimation xySeriesSlideAnimation1 = new DevExpress.XtraCharts.XYSeriesUnwindAnimation(); sideBySideBarSeriesView1.ColorEach = true; charControl.Series.Clear(); charControl.AnimationStartMode = DevExpress.XtraCharts.ChartAnimationMode.OnDataChanged; //charControl.SeriesSorting = SortingMode.Descending; Series series1 = new Series(_ChartTitle, ViewType.Bar); Series series2 = new Series("%", ViewType.Spline); for (int i = 0; i < dt.Rows.Count; i++) { series1.Points.Add(new SeriesPoint(dt.Rows[i][iColPoint].ToString(), dt.Rows[i][iColValue].ToString())); series2.Points.Add(new SeriesPoint(dt.Rows[i][iColPoint].ToString(), dt.Rows[i][iColPercent].ToString())); } series1.ArgumentScaleType = ScaleType.Qualitative; series2.ArgumentScaleType = ScaleType.Qualitative; series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; sideBySideBarSeriesView1.ColorEach = false; series1.View = sideBySideBarSeriesView1; series1.Label.Font = new System.Drawing.Font("Calibri", 8.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); splineSeriesView1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); splineSeriesView1.LineStyle.Thickness = 2; splineSeriesView1.SeriesAnimation = xySeriesSlideAnimation1; splineSeriesView1.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; splineSeriesView1.LineMarkerOptions.Size = 15; splineSeriesView1.LineMarkerOptions.Color = Color.DodgerBlue; series2.Label.BackColor = Color.White; series2.Label.Font = new System.Drawing.Font("Calibri", 8.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); series2.Label.TextPattern = "{V:###.##}%"; series2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; series2.View = splineSeriesView1; charControl.Series.AddRange(new Series[] { series1, series2 }); //((XYDiagram)charControl.Diagram).AxisY.VisualRange.SideMarginsValue = 1; charControl.Titles[0].Text = _ChartTitle; charControl.Titles[0].Font = new System.Drawing.Font("Calibri", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis"); ((XYDiagram)charControl.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)charControl.Diagram).SecondaryAxesY.Add(myAxisY); myAxisY.VisualRange.SetMinMaxValues(0, 95); myAxisY.Title.Text = "%"; myAxisY.Tickmarks.MinorVisible = false; //((XYDiagram)barChartControl.Diagram).AxisY.WholeRange.SetMinMaxValues(90, 100); myAxisY.Label.Font = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); myAxisY.Title.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); myAxisY.Label.TextPattern = "{V:###.##}"; myAxisY.Title.TextColor = Color.DarkOrange; myAxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; ((SplineSeriesView)series2.View).AxisY = myAxisY; ((XYDiagram)charControl.Diagram).AxisX.QualitativeScaleOptions.AutoGrid = false; } catch (Exception ex) { } }
public MyUserControl01(string eqp, Color eqlColor, string la1, string la2, string la3, int chartSize) { InitializeComponent(); string eqpName = eqp; labelControl1.Text = la1; labelControl2.Text = la2; labelControl3.Text = la3; tileBar1.Orientation = System.Windows.Forms.Orientation.Horizontal; tileBar1.AppearanceItem.Normal.BackColor = Color.FromArgb(65, 168, 207); tileBar1.AppearanceItem.Normal.ForeColor = Color.White; TileBarGroup group1 = new TileBarGroup(); tileBar1.Groups.Add(group1); tileBar1.WideTileWidth = 120; tileBar1.ItemSize = 65; tileBar1.Padding = new Padding() { All = 0, Left = 10 }; tileBar1.HorizontalContentAlignment = DevExpress.Utils.HorzAlignment.Near; tileBar1.VerticalContentAlignment = DevExpress.Utils.VertAlignment.Top; TileBarItem tile1 = new TileBarItem(); tile1.ItemSize = DevExpress.XtraBars.Navigation.TileBarItemSize.Wide; tile1.AppearanceItem.Normal.BackColor = eqlColor; tile1.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True; tile1.Elements.Add(new TileItemElement() { Text = "", Image = DevExpress.Images.ImageResourceCache.Default.GetImage("office2013/gauges/gaugestylethreeforthcircular_32x32.png"), ImageAlignment = TileItemContentAlignment.BottomRight }); tile1.Elements.Add(new TileItemElement() { Text = string.Format("<size=8>{0}</size>", eqpName), TextAlignment = TileItemContentAlignment.TopLeft }); //tile1.Elements.Add(new TileItemElement() { Text = string.Format("<size=8>{0}</size><br><size=8>Equipment<br>running rate</size>", eqpName), TextAlignment = TileItemContentAlignment.TopLeft }); group1.Items.Add(tile1); tile1.ItemClick += Tile1_ItemClick; var series = new Series(" ", ViewType.FullStackedArea); series.ArgumentScaleType = ScaleType.Auto; series.LabelsVisibility = DefaultBoolean.True; chartControl1.Series.Add(series); this.chartControl1.Legend.TextVisible = false; this.chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; Random r = new Random(); for (int x = 0; x < chartSize; x++) { if (x % 4 == 1) { CreateSeries(x + r.Next(0, 100), Color.LightGreen); } else if (x % 4 == 2) { CreateSeries(x + r.Next(0, 10), Color.PaleGoldenrod); } else if (x % 4 == 3) { CreateSeries(x + r.Next(0, 5), Color.Gainsboro); } else if (x % 4 == 0) { CreateSeries(x + r.Next(0, 20), Color.LightPink); } } SecondaryAxisY secondaryAxisY1 = new SecondaryAxisY(); secondaryAxisY1.VisibleInPanesSerializable = "-1"; secondaryAxisY1.WholeRange.Auto = false; secondaryAxisY1.WholeRange.MaxValueSerializable = "24"; secondaryAxisY1.WholeRange.MinValueSerializable = "1"; //((XYDiagram)chartControl1.Diagram).AxisX.Range.SideMarginsEnabled = false; ((XYDiagram)chartControl1.Diagram).Rotated = true; ((XYDiagram)chartControl1.Diagram).AxisX.Visibility = DevExpress.Utils.DefaultBoolean.True; ((XYDiagram)chartControl1.Diagram).AxisX.VisibleInPanesSerializable = "-1"; ((XYDiagram)chartControl1.Diagram).AxisX.VisualRange.Auto = false; ((XYDiagram)chartControl1.Diagram).AxisX.VisualRange.MaxValueSerializable = "200"; ((XYDiagram)chartControl1.Diagram).AxisX.VisualRange.MinValueSerializable = "1"; ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.Auto = false; ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.MaxValueSerializable = "200"; ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.MinValueSerializable = "1"; ((XYDiagram)chartControl1.Diagram).AxisY.Visibility = DevExpress.Utils.DefaultBoolean.True; ((XYDiagram)chartControl1.Diagram).AxisY.VisibleInPanesSerializable = "-1"; ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.AddRange(new SecondaryAxisY[] { secondaryAxisY1 }); //XYDiagram xyDiagram1 = new XYDiagram(); //xyDiagram1.Rotated = true; //chartControl1.Diagram = xyDiagram1; MakePointChart(); }
private void GenerateReportOfSegment(double BegMeasure, double endMeasure, string outFile) { if (checkBoxRotateMap.Checked) { IFeatureLayer pCenterlineLayer = null; string pCenterlineFileName = comboBoxExCenterline.SelectedItem.ToString(); for (int i = 0; i < pMapcontrol.LayerCount; i++) { if (pCenterlineFileName == pMapcontrol.get_Layer(i).Name) { pCenterlineLayer = pMapcontrol.get_Layer(i) as IFeatureLayer; } } IFeatureClass pCenterlineFC = pCenterlineLayer.FeatureClass; try { IFeatureCursor pCurcor = pCenterlineFC.Search(null, false); IFeature pFeature = pCurcor.NextFeature(); IGeometry pGeo = pFeature.Shape; IMSegmentation pMS = pGeo as IMSegmentation; double minM = pMS.MMin; double maxM = pMS.MMax; BegMeasure = BegMeasure < minM ? minM : BegMeasure; endMeasure = endMeasure > maxM ? maxM : endMeasure; IPoint begPt = pMS.GetPointsAtM(BegMeasure, 0).Geometry[0] as IPoint; IPoint endPt = pMS.GetPointsAtM(endMeasure, 0).Geometry[0] as IPoint; ISpatialReference sourcePrj; sourcePrj = pCenterlineFC.Fields.get_Field(pCenterlineFC.FindField(pCenterlineFC.ShapeFieldName)).GeometryDef.SpatialReference; ISpatialReference targetPrj = pMapcontrol.Map.SpatialReference; IPoint begPtPrj; IPoint endPtPrj; begPt.Project(targetPrj); endPt.Project(targetPrj); begPtPrj = begPt; endPtPrj = endPt; IActiveView pView = this.pMapcontrol.Map as IActiveView; pView.ScreenDisplay.DisplayTransformation.Rotation = 0; double widthHeightR = (((double)pView.ExportFrame.right - pView.ExportFrame.left) / ((double)pView.ExportFrame.bottom - pView.ExportFrame.top)); // Dim fw As New FileWindow(begPt, endPt, widthHeightR) MCenterlineUtil fw = new MCenterlineUtil(begPtPrj, endPtPrj, widthHeightR); fw.FitActiveViewTo(pView, true); System.Runtime.InteropServices.Marshal.ReleaseComObject(pCurcor); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } } #region //导出arcmap 地图 export mapfram IPageLayout _PageLayout = this.pPageLayoutControl.PageLayout; SizeF m_PageSize = new SizeF(); double width; double hight; _PageLayout.Page.QuerySize(out width, out hight); m_PageSize.Width = Convert.ToSingle(width); m_PageSize.Height = Convert.ToSingle(hight); IUnitConverter pUConvert = new UnitConverterClass(); esriUnits ut = _PageLayout.Page.Units; float pageUnitToInchUnitScale = (float)pUConvert.ConvertUnits(1, ut, esriUnits.esriInches); var layerOutPageSize = m_PageSize; var outputDPI = 300; int BandHeadWidth = 40; var originalActiveView = _PageLayout as IActiveView; var activeView = _PageLayout as IActiveView; originalActiveView.Refresh(); var avEvents = _PageLayout as IActiveViewEvents; float centerX = layerOutPageSize.Width / 2; float centerY = layerOutPageSize.Height / 2; var backGroundEnv = new Envelope() as IEnvelope; backGroundEnv.PutCoords(0, 0, layerOutPageSize.Width, layerOutPageSize.Height); activeView.Extent = backGroundEnv; //System.Threading.Thread.Sleep(2000); IExport pExporter = new ExportPDF() as IExport; pExporter.ExportFileName = outFile; pExporter.Resolution = outputDPI; var pExPdf = pExporter as IExportPDF; pExPdf.Compressed = true; pExPdf.ImageCompression = esriExportImageCompression.esriExportImageCompressionDeflate; var screenResolution = GetCurrentScreenResolution(); var outputResolution = outputDPI; ESRI.ArcGIS.esriSystem.tagRECT exportRECT; exportRECT.left = 0; exportRECT.top = 0; exportRECT.right = (int)(activeView.ExportFrame.right * outputResolution / screenResolution) + 1; exportRECT.bottom = (int)(activeView.ExportFrame.bottom * outputResolution / screenResolution) + 1; var envelope = new Envelope() as IEnvelope; envelope.PutCoords(exportRECT.left, exportRECT.top, exportRECT.right, exportRECT.bottom); pExporter.PixelBounds = envelope; var hDC = pExporter.StartExporting(); activeView.Output(hDC, outputDPI, exportRECT, backGroundEnv, null); pExporter.FinishExporting(); pExporter.Cleanup(); // MessageBox.Show("Export finished."); #endregion #region //根据中线图层生成剖面图 System.Drawing.Point LastBottomLeftPoint = new System.Drawing.Point(); int bandwidth = 0; PdfGraphics pGraphics = null; IFeatureLayer pCenterlinePointLayer = null; string centerlinePointnName = cboBoxPointLayer.SelectedItem.ToString(); for (int i = 0; i < pMapcontrol.LayerCount; i++) { if (centerlinePointnName == pMapcontrol.get_Layer(i).Name) { pCenterlinePointLayer = pMapcontrol.get_Layer(i) as IFeatureLayer; } } IQueryFilter pQF = null; DataTable centerlinePointTable = AOFunctions.GDB.ITableUtil.GetDataTableFromITable(pCenterlinePointLayer.FeatureClass as ITable, pQF); chartControl1.Series.Clear(); Series series = new Series("高程", ViewType.Line); Series series2 = new Series("埋深", ViewType.Line); SecondaryAxisY myAxisY = new SecondaryAxisY("埋深"); foreach (DataRow r in centerlinePointTable.Rows) { double m; double z; double underz; m = Convert.ToDouble(r[EvConfig.CenterlineMeasureField]); if (m < BegMeasure || m > endMeasure) { continue; } if (r[EvConfig.CenterlineMeasureField] != DBNull.Value && r[EvConfig.CenterlineZField] != DBNull.Value) { m = Convert.ToDouble(r[EvConfig.CenterlineMeasureField]); z = Convert.ToDouble(r[EvConfig.CenterlineZField]); series.Points.Add(new SeriesPoint(m, z)); } // if (r[EvConfig.CenterlineMeasureField] != DBNull.Value && r["管道埋深("] != DBNull.Value) if (r[EvConfig.CenterlineMeasureField] != DBNull.Value && r[EvConfig.CenterlineBuryDepthField] != DBNull.Value) { m = Convert.ToDouble(r[EvConfig.CenterlineMeasureField]); z = Convert.ToDouble(r[EvConfig.CenterlineBuryDepthField]); series2.Points.Add(new SeriesPoint(m, z)); } } chartControl1.Series.Add(series); chartControl1.Series.Add(series2); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Clear(); ((XYDiagram)chartControl1.Diagram).SecondaryAxesX.Clear(); ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY); ((LineSeriesView)series2.View).AxisY = myAxisY; ((LineSeriesView)series.View).AxisY = ((XYDiagram)chartControl1.Diagram).AxisY; series.ChangeView(ViewType.Line); ((XYDiagram)chartControl1.Diagram).AxisY.WholeRange.Auto = true; myAxisY.WholeRange.Auto = true; series2.ChangeView(ViewType.Line); myAxisY.Tickmarks.Visible = true; myAxisY.Tickmarks.MinorVisible = false; ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.AutoSideMargins = false; ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.SideMarginsValue = 0; ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.SetMinMaxValues(BegMeasure, endMeasure); series.ArgumentScaleType = ScaleType.Numerical; int ProfileMapHight = 8; #endregion #region export chartcontrol IGraphicsContainer pGC = _PageLayout as IGraphicsContainer; pGC.Reset(); IElement pE = pGC.Next(); while (pE != null) { if (pE is IMapFrame) { // framgeo related to _PageLayout.Page pagesize, 8.5 x 11, inch IEnvelope framgeo = pE.Geometry.Envelope as IEnvelope; float defaultDPI = PdfGraphics.DefaultDpi; double x = defaultDPI * framgeo.LowerLeft.X * pageUnitToInchUnitScale; double y = defaultDPI * (layerOutPageSize.Height - framgeo.LowerLeft.Y) * pageUnitToInchUnitScale + 1; bandwidth = (int)(defaultDPI * (framgeo.Width * pageUnitToInchUnitScale)); LastBottomLeftPoint.X = (int)x; LastBottomLeftPoint.Y = (int)y; chartControl1.Size = new System.Drawing.Size((int)(framgeo.Width * pageUnitToInchUnitScale * defaultDPI), (int)(ProfileMapHight * pageUnitToInchUnitScale * defaultDPI)); Image img = null; Bitmap bmp = null; // Create an image of the chart. ImageFormat format = ImageFormat.Png; using (MemoryStream s = new MemoryStream()) { chartControl1.ExportToImage(s, format); img = Image.FromStream(s); bmp = new Bitmap(img); bmp.SetResolution(300, 300); } using (PdfDocumentProcessor processor = new PdfDocumentProcessor()) { processor.LoadDocument(outFile); PdfDocument pd = processor.Document; PdfPage page = pd.Pages[0]; PdfRectangle pdfrec = page.MediaBox; // RectangleF rf = new RectangleF(0, 0, Convert.ToSingle(pdfrec.Width) * 96 / 72, Convert.ToSingle(pdfrec.Height) * 96 / 72); // Create and draw PDF graphics. using (pGraphics = processor.CreateGraphics()) { PdfGraphics graph = pGraphics; Pen defaultPen = new Pen(Color.Black); defaultPen.Width = 1; graph.DrawImage(bmp, new RectangleF((float)x, (float)y, (float)framgeo.Width * pageUnitToInchUnitScale * defaultDPI, (float)ProfileMapHight * pageUnitToInchUnitScale * defaultDPI)); // draw map head. RectangleF MapheadRect = new RectangleF((float)(int)(defaultDPI * framgeo.XMin * pageUnitToInchUnitScale - BandHeadWidth), (float)(int)(defaultDPI * (layerOutPageSize.Height - framgeo.UpperLeft.Y) * pageUnitToInchUnitScale), (float)(int)(BandHeadWidth), (float)(int)(defaultDPI * framgeo.Height * pageUnitToInchUnitScale)); graph.DrawRectangle(defaultPen, MapheadRect); //draw head text RectangleF rF = new RectangleF(0, 0, (float)MapheadRect.Height, (float)BandHeadWidth); PdfStringFormat psf = new PdfStringFormat(PdfStringFormat.GenericDefault); psf.Alignment = PdfStringAlignment.Center; psf.LineAlignment = PdfStringAlignment.Center; graph.SaveGraphicsState(); // head box 的左下角 System.Drawing.Font textfont = new System.Drawing.Font("仿宋", 6F); graph.TranslateTransform((float)(MapheadRect.Left), (float)(MapheadRect.Bottom)); graph.RotateTransform(270); graph.DrawString("地图", textfont, new SolidBrush(Color.Black), rF, psf); graph.RestoreGraphicsState(); // draw chart head RectangleF ChartheadRect = new RectangleF((float)(int)(defaultDPI * framgeo.XMin * pageUnitToInchUnitScale - BandHeadWidth), (float)(int)(defaultDPI * (layerOutPageSize.Height - framgeo.LowerLeft.Y) * pageUnitToInchUnitScale + 1), (float)(int)(BandHeadWidth), (float)(int)(defaultDPI * ProfileMapHight * pageUnitToInchUnitScale)); graph.DrawRectangle(defaultPen, ChartheadRect); //draw head text rF = new RectangleF(0, 0, (float)ChartheadRect.Height, (float)BandHeadWidth); graph.SaveGraphicsState(); // head box 的左下角 graph.TranslateTransform((float)(ChartheadRect.Left), (float)(ChartheadRect.Bottom)); graph.RotateTransform(270); graph.DrawString("剖面图", textfont, new SolidBrush(Color.Black), rF, psf); graph.RestoreGraphicsState(); LastBottomLeftPoint.Y = (int)ChartheadRect.Bottom; //double beginM = -999; double endM = -999; //GetIMUBeginEndMeasure(ref beginM, ref endM); double beginM = BegMeasure; double endM = endMeasure; for (int i = 0; i < listBoxDrawBandFields.Items.Count; i++) { string fieldname = listBoxDrawBandFields.Items[i].ToString(); band b = new band(); b.BandName = fieldname; b.pdfGC = pGraphics; b.BandWidth = (int)bandwidth; b.headFont = labelbiaotou.Font; b.ContentFont = labelNeirong.Font; System.Drawing.Point pt = new System.Drawing.Point(); pt.X = LastBottomLeftPoint.X; pt.Y = LastBottomLeftPoint.Y; b.BandTopLeftLocation = pt; b.BeginM = beginM; b.EndM = endM; //b.bandData = new List<Tuple<double, string>>(); //for (int j = 0; j < 6; j++) //{ // double m = j * 500; // string txt = "异常2"; // Tuple<double, string> t = new Tuple<double, string>(m,txt); // b.bandData.Add(t); //} b.bandData = GetPDFBandData(fieldname); b.Draw(); LastBottomLeftPoint.Y += (int)b.BandHight; } // graph.DrawImage(img, rf); graph.AddToPageForeground(page); // Render a page with graphics. //processor.RenderNewPage(PdfPaperSize.Letter, graph); processor.SaveDocument(outFile); } } break; } pE = pGC.Next(); } #endregion }
private void DisplayChart() { _sePrice.Points.Clear(); _seVolume.Points.Clear(); _seAvgPrice.Points.Clear(); if (_timeSharingData == null || _timeSharingData.Rows.Count == 0) { return; } foreach (DataRow row in _timeSharingData.Rows) { //var tradeTime = Regex.Replace(row["TradeTime"].ToString().Trim(), "[:]", ""); var tradeTime = row["TradeTime"].ToString().Trim(); var closePrice = CommonHelper.StringToDouble(row["Close"].ToString().Trim()); var avgPrice = CommonHelper.StringToDouble(row["AvgPrice"].ToString().Trim()); var volume = CommonHelper.StringToDouble(row["Volume"].ToString().Trim()); SeriesPoint spPrice = new SeriesPoint(tradeTime, closePrice); _sePrice.Points.Add(spPrice); SeriesPoint spVolume = new SeriesPoint(tradeTime, volume); _seVolume.Points.Add(spVolume); if (string.Compare(tradeTime, "09:30") >= 0) { SeriesPoint spAvgPrice = new SeriesPoint(tradeTime, avgPrice); _seAvgPrice.Points.Add(spAvgPrice); } } XYDiagram myDiagram = chartControl1.Diagram as XYDiagram; AxisX myAxisX = myDiagram.AxisX; AxisY myAxisY = myDiagram.AxisY; double minClose = (double)_timeSharingData.AsEnumerable().Select(x => x.Field <decimal>("Close")).Min(); double maxClose = (double)_timeSharingData.AsEnumerable().Select(x => x.Field <decimal>("Close")).Max(); double maxDiff = Math.Abs(minClose - _preClose) > Math.Abs(maxClose - _preClose) ? Math.Abs(minClose - _preClose) : Math.Abs(maxClose - _preClose); double minValueY = _preClose - maxDiff; double maxValueY = _preClose + maxDiff; myAxisY.WholeRange.Auto = false; myAxisY.WholeRange.SetMinMaxValues(minValueY, maxValueY); myAxisY.LabelVisibilityMode = AxisLabelVisibilityMode.Default; SecondaryAxisY mySecondaryAxisY = myDiagram.SecondaryAxesY[0]; double minRate = -maxDiff / _preClose; double maxRate = maxDiff / _preClose; mySecondaryAxisY.WholeRange.Auto = false; mySecondaryAxisY.WholeRange.SetMinMaxValues(minRate, maxRate); mySecondaryAxisY.LabelVisibilityMode = AxisLabelVisibilityMode.Default; myAxisY.CustomLabels.Clear(); mySecondaryAxisY.CustomLabels.Clear(); double priceInterval = Math.Round(maxDiff / 7, 2); for (int i = 0; i < 20; i++) { double price = _preClose + (10 - i) * priceInterval; myAxisY.CustomLabels.Add(new CustomAxisLabel(i.ToString(), price)); myAxisY.CustomLabels[i].TextColor = Color.FromArgb(204, 51, 0); double rate = (10 - i) * priceInterval / _preClose; mySecondaryAxisY.CustomLabels.Add(new CustomAxisLabel(i.ToString(), rate)); mySecondaryAxisY.CustomLabels[i].TextColor = Color.FromArgb(204, 51, 0); } }