using System;
using System.Drawing;
using System.Windows.Forms;
using Steema.TeeChart.Drawing;
using Steema.TeeChart.Functions;
using Steema.TeeChart.Styles;
using Steema.TeeChart.Tools;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 소스 라인
/// </summary>
private Line sourceLine;
/// <summary>
/// 시리즈 통계
/// </summary>
private SeriesStats seriesStats;
/// <summary>
/// 평균
/// </summary>
private Average average;
/// <summary>
/// 평균 라인
/// </summary>
private Line averageLine;
/// <summary>
/// 추세 함수
/// </summary>
private TrendFunction trendFunction;
/// <summary>
/// 추세 라인
/// </summary>
private Line trendLine;
/// <summary>
/// 하한
/// </summary>
private Low low;
/// <summary>
/// 하한 라인
/// </summary>
private Line lowLine;
/// <summary>
/// 상한
/// </summary>
private High high;
/// <summary>
/// 상한 라인
/// </summary>
private Line highLine;
/// <summary>
/// 중위수 함수
/// </summary>
private MedianFunction medianFunction;
/// <summary>
/// 중위수 라인
/// </summary>
private Line medianLine;
/// <summary>
/// 상관 관계 함수
/// </summary>
private CorrelationFunction correlationFunction;
/// <summary>
/// 상관 관계 라인
/// </summary>
private Line correlationLine;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
Text = "SeriesStats 클래스 : 시리즈 통계 사용하기";
this.averageCheckBox.Checked = true;
this.tChart.Panel.Pen = new ChartPen(Color.Black);
this.sourceLine = new Line(this.tChart.Chart);
this.sourceLine.FillSampleValues(30);
this.seriesStats = new SeriesStats(this.tChart.Chart);
this.seriesStats.Series = this.sourceLine;
this.average = new Average(this.tChart.Chart);
this.averageLine = new Line(this.tChart.Chart);
this.averageLine.LinePen.Width = 2;
this.averageLine.Color = Color.Yellow;
this.averageLine.DataSource = this.sourceLine;
this.averageLine.Function = this.average;
this.averageLine.Title = "평균";
this.averageLine.Active = true;
this.trendFunction = new TrendFunction();
this.trendLine = new Line(this.tChart.Chart);
this.trendLine.LinePen.Width = 2;
this.trendLine.Color = Color.Blue;
this.trendLine.DataSource = this.sourceLine;
this.trendLine.Function = this.trendFunction;
this.trendLine.Title = "추세선";
this.trendLine.Active = false;
this.low = new Low();
this.lowLine = new Line(this.tChart.Chart);
this.lowLine.LinePen.Width = 2;
this.lowLine.Color = Color.Red;
this.lowLine.DataSource = this.sourceLine;
this.lowLine.Function = this.low;
this.lowLine.Title = "하한";
this.lowLine.Active = false;
this.high = new High();
this.highLine = new Line(this.tChart.Chart);
this.highLine.LinePen.Width = 2;
this.highLine.Color = Color.Red;
this.highLine.DataSource = this.sourceLine;
this.highLine.Function = this.high;
this.highLine.Title = "상한";
this.highLine.Active = false;
this.medianFunction = new MedianFunction(this.tChart.Chart);
this.medianLine = new Line(this.tChart.Chart);
this.medianLine.LinePen.Width = 2;
this.medianLine.Color = Color.Gray;
this.medianLine.DataSource = this.sourceLine;
this.medianLine.Function = this.medianFunction;
this.medianLine.Title = "중위수";
this.medianLine.Active = false;
this.correlationFunction = new CorrelationFunction();
this.correlationLine = new Line(this.tChart.Chart);
this.correlationLine.LinePen.Width = 2;
this.correlationLine.Color = Color.Magenta;
this.correlationLine.DataSource = this.sourceLine;
this.correlationLine.Function = this.correlationFunction;
this.correlationLine.Title = "상관 관계";
this.correlationLine.Active = false;
this.averageCheckBox.CheckedChanged += averageCheckBox_CheckedChanged;
this.trendCheckBox.CheckedChanged += trendCheckBox_CheckedChanged;
this.lowCheckBox.CheckedChanged += lowCheckBox_CheckedChanged;
this.highCheckBox.CheckedChanged += highCheckBox_CheckedChanged;
this.mediumCheckBox.CheckedChanged += mediumCheckBox_CheckedChanged;
this.correlationCheckBox.CheckedChanged += correlationCheckBox_CheckedChanged;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 평균 체크 박스 체크 변경시 처리하기 - averageCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 평균 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void averageCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.averageLine.Active = this.averageCheckBox.Checked;
}
#endregion
#region 추세선 체크 박스 체크 변경시 처리하기 - trendCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 추세선 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void trendCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.trendLine.Active = this.trendCheckBox.Checked;
}
#endregion
#region 하한 체크 박스 체크 변경시 처리하기 - lowCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 하한 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void lowCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.lowLine.Active = this.lowCheckBox.Checked;
}
#endregion
#region 상한 체크 박스 체크 변경시 처리하기 - highCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 상한 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void highCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.highLine.Active = this.highCheckBox.Checked;
}
#endregion
#region 중위수 체크 박스 체크 변경시 처리하기 - mediumCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 중위수 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void mediumCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.medianLine.Active = this.mediumCheckBox.Checked;
}
#endregion
#region 상관 관계 체크 박스 체크 변경시 처리하기 - correlationCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 상관 관계 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void correlationCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.correlationLine.Active = this.correlationCheckBox.Checked;
}
#endregion
}
}