namespace ZedGraphChartDisplay
{
public class DrawingPic
{
private ZedGraph.ZedGraphControl zedScoreChart;
/// <summary>
/// X轴名称
/// </summary>
private const string X_AXIS_NAME = "";
/// <summary>
/// Y轴名称
/// </summary>
private const string Y_AXIS_NAME = "";
/// <summary>
/// 缓存已构造好的曲线
/// </summary>
private List<CurveItem> m_CurveLst;
private void InitGraphPane()
{
zedScoreChart.GraphPane.YAxis.Scale.Min = 0;
zedScoreChart.GraphPane.YAxis.Title.Text = Y_AXIS_NAME;
zedScoreChart.GraphPane.XAxis.Title.Text = X_AXIS_NAME;
zedScoreChart.GraphPane.Title.IsVisible = false;
zedScoreChart.GraphPane.XAxis.MajorGrid.IsVisible = true;
zedScoreChart.GraphPane.YAxis.MajorGrid.IsVisible = true;
zedScoreChart.GraphPane.XAxis.MajorGrid.Color = System.Drawing.Color.Gray;
zedScoreChart.GraphPane.YAxis.MajorGrid.Color = System.Drawing.Color.Gray;
zedScoreChart.GraphPane.XAxis.MinorGrid.IsVisible = true;
zedScoreChart.GraphPane.YAxis.MinorGrid.IsVisible = true;
zedScoreChart.GraphPane.XAxis.MinorGrid.Color = System.Drawing.Color.LightGray;
zedScoreChart.GraphPane.YAxis.MinorGrid.Color = System.Drawing.Color.LightGray;
//Y轴(百分数)
zedScoreChart.GraphPane.YAxis.Scale.Min = 0;
zedScoreChart.GraphPane.YAxis.Scale.Max = 100;
zedScoreChart.GraphPane.Fill = new ZedGraph.Fill(System.Drawing.Color.White, System.Drawing.Color.FromArgb(255, 255, 166), 90F);
zedScoreChart.GraphPane.Legend.Position = ZedGraph.LegendPos.Top;
zedScoreChart.AxisChange();
}
private void ShowCurves()
{
zedScoreChart.GraphPane.CurveList.Clear();
zedScoreChart.GraphPane.CurveList.AddRange(m_CurveLst.FindAll(p => ((LineItem)p).IsVisible == true));
//改变轴(指标值)
AutoChangeAxis();
//刷新显示
zedScoreChart.Refresh();
}
//自动调整坐标轴大小,防止指标切换时过大或过小,在图上看不见
private void AutoChangeAxis()
{
if (zedScoreChart.GraphPane.CurveList.Count == 0)
{
return;
}
//先找出所有需要显示的点集合,
//然后对XY排序,找出最大最小值,即为坐标最大最小值
List<double> XData = new List<double>();
List<double> YData = new List<double>();
foreach (CurveItem ci in zedScoreChart.GraphPane.CurveList)
{
for (int i = 0; i < ci.Points.Count; i++)
{
PointPair pp = ci.Points[i];
XData.Add(pp.X);
YData.Add(pp.Y);
}
}
XData.Sort();
YData.Sort();
if (XData.Count > 0)
{
zedScoreChart.GraphPane.XAxis.Scale.Min = XData.First();
zedScoreChart.GraphPane.XAxis.Scale.Max = XData.Last();
}
if (YData.Count > 0)
{
zedScoreChart.GraphPane.YAxis.Scale.Min = YData.First();
zedScoreChart.GraphPane.YAxis.Scale.Max = YData.Last();
}
zedScoreChart.AxisChange();
}
//添加数据
public void FillData()
{
LineItem li = new LineItem();
//构造点
List<float[]> points = CreatePoints(resultList);
//将点添加到曲线
foreach (float[] p in points)
{
li.AddPoint(p[0], p[1]);
}
//将曲线添加到集合
m_CurveLst.Add((CurveItem)li);
}
}
}
{
public class DrawingPic
{
private ZedGraph.ZedGraphControl zedScoreChart;
/// <summary>
/// X轴名称
/// </summary>
private const string X_AXIS_NAME = "";
/// <summary>
/// Y轴名称
/// </summary>
private const string Y_AXIS_NAME = "";
/// <summary>
/// 缓存已构造好的曲线
/// </summary>
private List<CurveItem> m_CurveLst;
private void InitGraphPane()
{
zedScoreChart.GraphPane.YAxis.Scale.Min = 0;
zedScoreChart.GraphPane.YAxis.Title.Text = Y_AXIS_NAME;
zedScoreChart.GraphPane.XAxis.Title.Text = X_AXIS_NAME;
zedScoreChart.GraphPane.Title.IsVisible = false;
zedScoreChart.GraphPane.XAxis.MajorGrid.IsVisible = true;
zedScoreChart.GraphPane.YAxis.MajorGrid.IsVisible = true;
zedScoreChart.GraphPane.XAxis.MajorGrid.Color = System.Drawing.Color.Gray;
zedScoreChart.GraphPane.YAxis.MajorGrid.Color = System.Drawing.Color.Gray;
zedScoreChart.GraphPane.XAxis.MinorGrid.IsVisible = true;
zedScoreChart.GraphPane.YAxis.MinorGrid.IsVisible = true;
zedScoreChart.GraphPane.XAxis.MinorGrid.Color = System.Drawing.Color.LightGray;
zedScoreChart.GraphPane.YAxis.MinorGrid.Color = System.Drawing.Color.LightGray;
//Y轴(百分数)
zedScoreChart.GraphPane.YAxis.Scale.Min = 0;
zedScoreChart.GraphPane.YAxis.Scale.Max = 100;
zedScoreChart.GraphPane.Fill = new ZedGraph.Fill(System.Drawing.Color.White, System.Drawing.Color.FromArgb(255, 255, 166), 90F);
zedScoreChart.GraphPane.Legend.Position = ZedGraph.LegendPos.Top;
zedScoreChart.AxisChange();
}
private void ShowCurves()
{
zedScoreChart.GraphPane.CurveList.Clear();
zedScoreChart.GraphPane.CurveList.AddRange(m_CurveLst.FindAll(p => ((LineItem)p).IsVisible == true));
//改变轴(指标值)
AutoChangeAxis();
//刷新显示
zedScoreChart.Refresh();
}
//自动调整坐标轴大小,防止指标切换时过大或过小,在图上看不见
private void AutoChangeAxis()
{
if (zedScoreChart.GraphPane.CurveList.Count == 0)
{
return;
}
//先找出所有需要显示的点集合,
//然后对XY排序,找出最大最小值,即为坐标最大最小值
List<double> XData = new List<double>();
List<double> YData = new List<double>();
foreach (CurveItem ci in zedScoreChart.GraphPane.CurveList)
{
for (int i = 0; i < ci.Points.Count; i++)
{
PointPair pp = ci.Points[i];
XData.Add(pp.X);
YData.Add(pp.Y);
}
}
XData.Sort();
YData.Sort();
if (XData.Count > 0)
{
zedScoreChart.GraphPane.XAxis.Scale.Min = XData.First();
zedScoreChart.GraphPane.XAxis.Scale.Max = XData.Last();
}
if (YData.Count > 0)
{
zedScoreChart.GraphPane.YAxis.Scale.Min = YData.First();
zedScoreChart.GraphPane.YAxis.Scale.Max = YData.Last();
}
zedScoreChart.AxisChange();
}
//添加数据
public void FillData()
{
LineItem li = new LineItem();
//构造点
List<float[]> points = CreatePoints(resultList);
//将点添加到曲线
foreach (float[] p in points)
{
li.AddPoint(p[0], p[1]);
}
//将曲线添加到集合
m_CurveLst.Add((CurveItem)li);
}
}
}