bool ChangeChartTypeToMulti(SpreadChartType fromChartType, SpreadChartType toChartType) { Dt.Cells.Data.SpreadChartUtility.GetDataDimension(fromChartType); Dt.Cells.Data.SpreadChartUtility.GetDataDimension(toChartType); string itemsFormula = _chart.ItemsFormula; _chart.ChartType = toChartType; ResetDataSeriesChartType(); List <SpreadDataSeries> list = new List <SpreadDataSeries>(); foreach (SpreadDataSeries series in _chart.DataSeries) { MemoryStream stream = new MemoryStream(); XmlWriter writer = XmlWriter.Create((Stream)stream); if (writer != null) { Serializer.SerializeObj(series, "DataSeries", writer); writer.Close(); stream.Seek(0L, (SeekOrigin)SeekOrigin.Begin); XmlReader @this = XmlReader.Create((Stream)stream); if (@this != null) { SpreadXYDataSeries series2 = Dt.Cells.Data.ChangeChartTypeHelper.CreateDataSeries(toChartType) as SpreadXYDataSeries; ((IXmlSerializable)series2).ReadXml(@this); if (!string.IsNullOrEmpty(itemsFormula)) { series2.XValueFormula = itemsFormula; } series2.ResetChartType(); @this.Close(); list.Add(series2); } } } _chart.AxisX.ItemsFormula = null; _chart.AxisY.ItemsFormula = null; if (list.Count > 0) { _chart.DataSeries.Clear(); _chart.DataSeries.AddRange((IList <SpreadDataSeries>)list); } return(true); }
bool ChangeToStockChart(SpreadChartType fromChartType, SpreadChartType toChartType) { Dt.Cells.Data.SpreadChartUtility.GetDataDimension(fromChartType); Dt.Cells.Data.SpreadChartUtility.GetDataDimension(toChartType); if (_chart.DataSeries.Count < 4) { return(false); } string itemsFormula = _chart.ItemsFormula; _chart.ChartType = toChartType; List <SpreadDataSeries> list = new List <SpreadDataSeries>(); SpreadDataSeries openSeries = _chart.DataSeries[0]; SpreadDataSeries highSeries = _chart.DataSeries[1]; SpreadDataSeries lowSeries = _chart.DataSeries[2]; SpreadDataSeries closeSeries = _chart.DataSeries[3]; openSeries.Stroke = null; highSeries.Stroke = null; lowSeries.Stroke = null; closeSeries.Stroke = null; SpreadOpenHighLowCloseSeries series5 = new SpreadOpenHighLowCloseSeries(openSeries, highSeries, lowSeries, closeSeries); if (!string.IsNullOrEmpty(itemsFormula)) { series5.XValueFormula = itemsFormula; } else if (openSeries is SpreadXYDataSeries) { SpreadXYDataSeries series6 = openSeries as SpreadXYDataSeries; if (!string.IsNullOrEmpty(series6.XValueFormula)) { series5.XValueFormula = series6.XValueFormula; } else if (series6.XValues.Count > 0) { series5.XValues = series6.XValues; } } MemoryStream stream = new MemoryStream(); XmlWriter writer = XmlWriter.Create((Stream)stream); if (writer != null) { Serializer.SerializeObj(series5, "DataSeries", writer); writer.Close(); stream.Seek(0L, (SeekOrigin)SeekOrigin.Begin); XmlReader @this = XmlReader.Create((Stream)stream); if (@this != null) { SpreadOpenHighLowCloseSeries series7 = Dt.Cells.Data.ChangeChartTypeHelper.CreateDataSeries(toChartType) as SpreadOpenHighLowCloseSeries; ((IXmlSerializable)series7).ReadXml(@this); @this.Close(); list.Add(series7); } } _chart.AxisX.ItemsFormula = null; _chart.AxisY.ItemsFormula = null; if (list.Count > 0) { _chart.DataSeries.Clear(); _chart.DataSeries.AddRange((IList <SpreadDataSeries>)list); } return(true); }
bool ChangeFromStockChart(SpreadChartType fromChartType, SpreadChartType toChartType) { Dt.Cells.Data.SpreadChartUtility.GetDataDimension(fromChartType); int dataDimension = Dt.Cells.Data.SpreadChartUtility.GetDataDimension(toChartType); if ((_chart.DataSeries.Count <= 0) || !(_chart.DataSeries[0] is SpreadOpenHighLowCloseSeries)) { return(false); } string itemsFormula = _chart.ItemsFormula; ResetDataSeriesChartType(); _chart.ChartType = toChartType; List <SpreadDataSeries> list = new List <SpreadDataSeries>(); SpreadOpenHighLowCloseSeries series = _chart.DataSeries[0] as SpreadOpenHighLowCloseSeries; for (int i = 0; i < 4; i++) { SpreadDataSeries openSeries = null; switch (i) { case 0: openSeries = series.OpenSeries; break; case 1: openSeries = series.HighSeries; break; case 2: openSeries = series.LowSeries; break; case 3: openSeries = series.CloseSeries; break; } if (openSeries.Stroke == null) { openSeries.IsAutomaticStroke = true; } MemoryStream stream = new MemoryStream(); XmlWriter writer = XmlWriter.Create((Stream)stream); if (writer != null) { Serializer.SerializeObj(openSeries, "DataSeires", writer); writer.Close(); stream.Seek(0L, (SeekOrigin)SeekOrigin.Begin); XmlReader @this = XmlReader.Create((Stream)stream); if (@this != null) { SpreadDataSeries series3 = Dt.Cells.Data.ChangeChartTypeHelper.CreateDataSeries(toChartType); ((IXmlSerializable)series3).ReadXml(@this); if (series3 is SpreadXYDataSeries) { SpreadXYDataSeries series4 = series3 as SpreadXYDataSeries; if (!string.IsNullOrEmpty(series.XValueFormula)) { series4.XValueFormula = series.XValueFormula; } else if (series.XValues.Count > 0) { series4.XValues = series.XValues; } } series3.ResetChartType(); @this.Close(); list.Add(series3); } } } if (((dataDimension == 1) && string.IsNullOrEmpty(itemsFormula)) && (itemsFormula != series.XValueFormula)) { if (toChartType.ToString().ToLower().Contains("bar")) { _chart.AxisY.ItemsFormula = series.XValueFormula; _chart.AxisX.ItemsFormula = null; } else { _chart.AxisX.ItemsFormula = series.XValueFormula; _chart.AxisY.ItemsFormula = null; } } if (list.Count > 0) { _chart.DataSeries.Clear(); _chart.DataSeries.AddRange((IList <SpreadDataSeries>)list); } return(true); }