using System;
using System.Drawing;
using System.Windows.Forms;
using Steema.TeeChart.Drawing;
using Steema.TeeChart.Styles;
using Steema.TeeChart.Tools;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 고속 라인
/// </summary>
private FastLine fastLine;
/// <summary>
/// 라인 그리기
/// </summary>
private DrawLine drawLine;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
Text = "DrawLine 클래스 : 라인 그리기";
this.activeCheckBox.Checked = true;
this.enableDrawCheckBox.Checked = true;
this.enableSelectionCheckBox.Checked = true;
this.mouseButtonComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
this.mouseButtonComboBox.Items.Add("왼쪽" );
this.mouseButtonComboBox.Items.Add("오른쪽");
this.mouseButtonComboBox.Items.Add("가운데");
this.mouseButtonComboBox.SelectedIndex = 0;
this.tChart.Panel.Pen = new ChartPen(Color.Black);
this.fastLine = new FastLine(this.tChart.Chart);
this.fastLine.FillSampleValues(100);
this.drawLine = new DrawLine(this.tChart.Chart);
this.drawLine.Pen.Width = 2;
this.drawLine.Pen.Color = Color.Blue;
this.drawLine.Active = true;
this.drawLine.EnableDraw = true;
this.drawLine.EnableSelect = true;
this.drawLine.Button = MouseButtons.Left;
this.activeCheckBox.CheckedChanged += activeCheckBox_CheckedChanged;
this.enableDrawCheckBox.CheckedChanged += enableDrawcheckBox_CheckedChanged;
this.enableSelectionCheckBox.CheckedChanged += enableSelectionCheckBox_CheckedChanged;
this.mouseButtonComboBox.SelectedIndexChanged += mouseButtonComboBox_SelectedIndexChanged;
this.deleteButton.Click += deleteButton_Click;
this.drawLine.NewLine += drawLine_NewLine;
this.drawLine.Select += drawLine_Select;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 활성화 체크 박스 체크 변경시 처리하기 - activeCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 활성화 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void activeCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.drawLine.Active = this.activeCheckBox.Checked;
}
#endregion
#region 그리기 가능 여부 체크 박스 체크 변경시 처리하기 - enableDrawcheckBox_CheckedChanged(sender, e)
/// <summary>
/// 그리기 가능 여부 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void enableDrawcheckBox_CheckedChanged(object sender, EventArgs e)
{
this.drawLine.EnableDraw = this.enableDrawCheckBox.Checked;
}
#endregion
#region 선택 가능 여부 체크 박스 체크 변경시 처리하기 - enableSelectionCheckBox_CheckedChanged(sender, e)
/// <summary>
/// 선택 가능 여부 체크 박스 체크 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void enableSelectionCheckBox_CheckedChanged(object sender, EventArgs e)
{
this.drawLine.EnableSelect = enableSelectionCheckBox.Checked;
}
#endregion
#region 마우스 버튼 콤보 박스 선택 인덱스 변경시 처리하기 - mouseButtonComboBox_SelectedIndexChanged(sender, e)
/// <summary>
/// 마우스 버튼 콤보 박스 선택 인덱스 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void mouseButtonComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
switch(this.mouseButtonComboBox.SelectedIndex)
{
case 0 : this.drawLine.Button = MouseButtons.Left; break;
case 1 : this.drawLine.Button = MouseButtons.Right; break;
case 2 : this.drawLine.Button = MouseButtons.Middle; break;
}
}
#endregion
#region 삭제 버튼 클릭시 처리하기 - deleteButton_Click(sender, e)
/// <summary>
/// 삭제 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void deleteButton_Click(object sender, EventArgs e)
{
this.drawLine.DeleteSelected();
this.deleteButton.Enabled = false;
this.lineCountValueLabel.Text = this.drawLine.Lines.Count.ToString();
}
#endregion
#region 라인 그리기 신규 라인 생성시 처리하기 - drawLine_NewLine(sender)
/// <summary>
/// 라인 그리기 신규 라인 생성시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
private void drawLine_NewLine(DrawLine sender)
{
this.lineCountValueLabel.Text = this.drawLine.Lines.Count.ToString();
}
#endregion
#region 라인 그리기 선택시 처리하기 - drawLine_Select(sender)
/// <summary>
/// 라인 그리기 선택시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
private void drawLine_Select(DrawLine sender)
{
this.deleteButton.Enabled = true;
}
#endregion
}
}