如题,在代码中修改Chart,并将修改保存,不必调用wizard。
可以添加/删除/隐藏series等等,并可改变图表风格.
using System;
using System.Text;
using System.IO;
using DevExpress.ExpressApp.Chart.Win;
using DevExpress.ExpressApp.Chart;
using DevExpress.XtraCharts;
namespace DynamicChartSolution.Module.Win
{
public class ChartManagerWin
{
private ChartControl chartControl;
private IModelChartListView chartModel;
private SeriesBuilder builder;
/// <summary>
/// 在ViewController中创建ChartManagerWin的方法:
/// ChartControl cc=(((ListView)View).Editor as ChartListEditor).ChartControl
/// IModelChartListView m=(IModelChartListView)View.Model
/// new ChartManagerWin(cc,m)
/// </summary>
/// <param name="control"></param>
/// <param name="model"></param>
public ChartManagerWin(ChartControl control, IModelChartListView model)
{
this.chartControl = control;
this.chartModel = model;
}
/// <summary>
/// 使用SeriesBuilder创建一个Series
/// </summary>
/// <returns></returns>
public SeriesBuilder GetSeriesBuilder()
{
return builder=new SeriesBuilder();
}
public SeriesBuilder GetSeriesBuilder(string seriesName,DevExpress.XtraCharts.ViewType viewType)
{
return builder=new SeriesBuilder(seriesName, viewType);
}
/// <summary>
/// 将Chart的更改保存到Model中
/// </summary>
/// <param name="model"></param>
public void SaveChanges()
{
MemoryStream ms = new MemoryStream();
chartControl.SaveToStream(ms);
chartModel.ChartSettings.Settings = Encoding.UTF8.GetString(ms.ToArray());
}
/// <summary>
/// 改变chart显示风格
/// </summary>
/// <param name="style"></param>
public void ChangeStyle(DevExpress.XtraCharts.ViewType style)
{
foreach (Series s in chartControl.Series)
{
s.ChangeView(style);
}
SaveChanges();
}
//需要注意的是,如果添加的Series和当前图表风格不同时不会显示
public void AddSeries(params Series[] series)
{
chartControl.Series.AddRange(series);
SaveChanges();
}
public void RemoveSeries(string seriesName)
{
if(chartControl.Series[seriesName]!=null)
chartControl.Series.Remove(chartControl.Series[seriesName]);
SaveChanges();
}
public void SetVisibility(string seriesName,bool visible)
{
chartControl.Series[seriesName].Visible = visible;
}
}
public class SeriesBuilder
{
private Series series;
public Series Series
{
get { return series; }
}
public SeriesBuilder()
{
series = new Series();
}
public SeriesBuilder(string seriesName,DevExpress.XtraCharts.ViewType viewType)
{
series = new Series(seriesName, viewType);
}
public string Name
{
set { series.Name = value; }
}
public DevExpress.XtraCharts.ViewType ViewType
{
set { series.ChangeView(value); }
}
public object DataSource
{
set { series.DataSource=value; }
}
public string ArgumentDataMember
{
set { series.ArgumentDataMember = value; }
}
public DevExpress.XtraCharts.ScaleType ArgumentScaleType
{
set { series.ArgumentScaleType = value; }
}
public DevExpress.XtraCharts.ScaleType ValueScaleType
{
set { series.ValueScaleType = value; }
}
public string ValueDataMember
{
set { series.ValueDataMembers.AddRange(value); }
}
public string SummaryFunction
{
set { series.SummaryFunction=value; }
}
public void AddDataFilter(string columnName,string columnTypeName,DataFilterCondition condition,object value)
{
series.DataFilters.Add(columnName, columnTypeName, condition, value);
}
}
}
本文介绍如何使用DevExpress库在C#中动态管理Chart控件,包括创建、修改系列(Series),改变图表风格并保存更改。通过具体实现方法,读者可以了解到如何在不使用向导的情况下灵活地调整图表。
313

被折叠的 条评论
为什么被折叠?



