[LIGHTNINGCHART/WINFORM] PointLineSeries 클래스 : DataBreaking 속성을 사용해 데이터 갭(gap) 표시하기
LightningChart/WinForm 2019. 9. 9. 22:47■ PointLineSeries 클래스 : DataBreaking 속성을 사용해 데이터 갭(gap) 표시하기
------------------------------------------------------------------------------------------------------------------------
▶ ChartHelper.cs
using System; using System.Collections.Generic; using System.Drawing;
using Arction.WinForms.Charting; using Arction.WinForms.Charting.Axes; using Arction.WinForms.Charting.Views.ViewXY;
namespace TestProject { /// <summary> /// 차트 헬퍼 /// </summary> public static class ChartHelper { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary> /// 단일 색상 리스트 /// </summary> public static List<Color> SolidColorList = new List<Color> { Color.FromArgb(187, 28 , 0 ), Color.FromArgb(222, 54 , 11), Color.FromArgb(199, 86 , 10), Color.FromArgb(255, 160, 0 ), Color.FromArgb(255, 124, 0 ) };
/// <summary> /// 반투명 색상 리스트 /// </summary> public static List<Color> TranslucentColorList = new List<Color> { Color.FromArgb(180, SolidColorList[0]), Color.FromArgb(180, SolidColorList[1]), Color.FromArgb(180, SolidColorList[2]), Color.FromArgb(180, SolidColorList[3]), Color.FromArgb(180, SolidColorList[4]) };
#endregion
//////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary> /// 복구 정보 /// </summary> private static RestoreInfo _restoreInfo;
/// <summary> /// 배경 색상 /// </summary> private static Color _backgroundColor = Color.FromArgb(255, 30, 30, 30);
/// <summary> /// 제목 색상 /// </summary> private static Color _titleColor = Color.FromArgb(255, 249, 202, 3);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public
#region 리스트 데이터 지우기 - ClearListData<TItem>(sourceList)
/// <summary> /// 리스트 데이터 지우기 /// </summary> /// <typeparam name="TItem">항목 타입</typeparam> /// <param name="sourceList">소스 리스트</param> public static void ClearListData<TItem>(List<TItem> sourceList) where TItem : IDisposable { if(sourceList == null) { return; }
while(sourceList.Count > 0) { int lastIndex = sourceList.Count - 1;
TItem item = sourceList[lastIndex];
sourceList.RemoveAt(lastIndex);
if(item != null) { (item as IDisposable).Dispose(); } } }
#endregion
#region 다크/플랫 스타일 설정하기 - SetDarkFlatStyle(chart, minorTickOption)
/// <summary> /// 다크/플랫 스타일 설정하기 /// </summary> /// <param name="chart">차트</param> /// <param name="minorTickOption">작은 눈금 옵션</param> public static void SetDarkFlatStyle(LightningChartUltimate chart, MinorTickOption minorTickOption = MinorTickOption.None) { _restoreInfo = new RestoreInfo(chart);
chart.Background.Color = _backgroundColor; chart.Background.GradientFill = GradientFill.Solid;
chart.ViewXY.GraphBackground.Color = Color.FromArgb(255, 20, 20, 20); chart.ViewXY.GraphBackground.GradientFill = GradientFill.Solid;
chart.Title.Color = _titleColor; chart.Title.MouseHighlight = MouseOverHighlight.None;
bool showXMinotTick = false; bool showYMinorTick = false;
if(minorTickOption == MinorTickOption.Both) { showXMinotTick = showYMinorTick = true; } else if(minorTickOption == MinorTickOption.OnlyX) { showXMinotTick = true; } else if(minorTickOption == MinorTickOption.OnlyY) { showYMinorTick = true; }
foreach(AxisY axisY in chart.ViewXY.YAxes) { axisY.Title.Color = _titleColor; axisY.Title.MouseHighlight = MouseOverHighlight.None;
axisY.MajorGrid.Color = Color.FromArgb(35, 255, 255, 255); axisY.MajorGrid.Pattern = LinePattern.Solid;
axisY.MinorDivTickStyle.Visible = showYMinorTick; }
foreach(AxisX axisX in chart.ViewXY.XAxes) { axisX.Title.Color = _titleColor; axisX.Title.MouseHighlight = MouseOverHighlight.None;
axisX.MajorGrid.Color = Color.FromArgb(35, 255, 255, 255); axisX.MajorGrid.Pattern = LinePattern.Solid;
axisX.MinorDivTickStyle.Visible = showXMinotTick; }
if(chart.ViewXY.LegendBoxes != null) { foreach(LegendBoxXY legendBox in chart.ViewXY.LegendBoxes) { legendBox.Shadow.Visible = false; } } }
#endregion #region 다크 플랫 스타일 취소하기 - CancelDarkFlatStyle(chart)
/// <summary> /// 다크 플랫 스타일 취소하기 /// </summary> /// <param name="chart">차트</param> public static void CancelDarkFlatStyle(LightningChartUltimate chart) { if(_restoreInfo != null) { if(chart != null) { chart.BeginUpdate();
chart.Background.Color = _restoreInfo.ChartColor; chart.Background.GradientFill = _restoreInfo.ChartGradientFill;
chart.ViewXY.GraphBackground.Color = _restoreInfo.ViewColor; chart.ViewXY.GraphBackground.GradientFill = _restoreInfo.viewGradientFill;
foreach(var yAxis in chart.ViewXY.YAxes) { yAxis.MajorGrid.Color = _restoreInfo.GridColor; yAxis.MajorGrid.Pattern = _restoreInfo.GridLinePattern;
yAxis.MinorDivTickStyle.Visible = true; }
foreach(var xAxis in chart.ViewXY.XAxes) { xAxis.MajorGrid.Color = _restoreInfo.GridColor; xAxis.MajorGrid.Pattern = _restoreInfo.GridLinePattern;
xAxis.MinorDivTickStyle.Visible = true; }
chart.EndUpdate(); } } }
#endregion } }
|
▶ MainForm.cs
using System; using System.Windows.Forms;
using Arction.WinForms.Charting; using Arction.WinForms.Charting.Axes; using Arction.WinForms.Charting.SeriesXY; using Arction.WinForms.Charting.Views.ViewXY;
namespace TestProject { /// <summary> /// 메인 폼 /// </summary> public partial class MainForm : Form { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary> /// 차트 /// </summary> private LightningChartUltimate chart = null;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary> /// 생성자 /// </summary> public MainForm() { InitializeComponent();
InitializeChart(); }
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private
#region 차트 초기화하기 - InitializeChart()
/// <summary> /// 차트 초기화하기 /// </summary> private void InitializeChart() { this.chart = new LightningChartUltimate();
this.chart.BeginUpdate();
this.chart.Name = "chart"; this.chart.Parent = this; this.chart.Dock = DockStyle.Fill;
this.chart.Title.Font = Font; this.chart.Title.Text = "선/막대 차트";
ViewXY viewXY = this.chart.ViewXY;
AxisX axisX = viewXY.XAxes[0];
axisX.Title.Font = Font; axisX.Title.Text = "X축"; axisX.ValueType = AxisValueType.Number; axisX.ScrollMode = XAxisScrollMode.None; axisX.AutoDivSpacing = false; axisX.MajorDiv = 2;
axisX.SetRange(0, 10);
AxisY axisY = viewXY.YAxes[0];
axisY.Title.Font = Font; axisY.Title.Text = "Y축";
axisY.SetRange(0, 50);
ChartHelper.SetDarkFlatStyle(this.chart);
int pointCount = 101;
const double INTERVAL = 0.1;
double[] xValueArray = new double[pointCount]; double[] yValueArray = new double[pointCount];
for(int i = 0; i < pointCount; i++) { xValueArray[i] = (double)i * INTERVAL; yValueArray[i] = 30.0 + 5.0 * Math.Sin((double)i / 20.0); }
yValueArray[40] = double.NaN; yValueArray[70] = double.NaN; yValueArray[71] = double.NaN; yValueArray[72] = double.NaN; yValueArray[73] = double.NaN; yValueArray[90] = double.NaN; yValueArray[91] = double.NaN;
PointLineSeries series = new PointLineSeries(viewXY, axisX, axisY);
series.DataBreaking.Enabled = true; series.DataBreaking.Value = double.NaN;
SeriesPoint[] pointArray = new SeriesPoint[pointCount];
for(int i = 0; i < pointCount; i++) { pointArray[i].X = xValueArray[i]; pointArray[i].Y = yValueArray[i]; }
series.Points = pointArray;
viewXY.PointLineSeries.Add(series);
LegendBoxXY legendBoxXY = viewXY.LegendBoxes[0];
legendBoxXY.Visible = false;
this.chart.EndUpdate(); }
#endregion } }
|
------------------------------------------------------------------------------------------------------------------------
'LightningChart > WinForm' 카테고리의 다른 글
[LIGHTNINGCHART/WINFORM] FreeformPointLineSeries 클래스 : Scatter 차트 그리기 (0) | 2019.09.09 |
---|---|
[LIGHTNINGCHART/WINFORM] PointLineSeries 클래스 : DataBreaking 속성을 사용해 데이터 갭(gap) 표시하기 (0) | 2019.09.09 |
[LIGHTNINGCHART/WINFORM] PointLineSeries/BarSeries 클래스 : 선/막대 차트 그리기 (0) | 2019.09.09 |
[LIGHTNINGCHART/WINFORM] PolygonSeries 클래스 : 다각형 차트 그리기 (0) | 2019.09.08 |
[LIGHTNINGCHART/WINFORM] HighLowSeries 클래스 : 상하한(High-Low) 차트 그리기 (0) | 2019.09.05 |
[LIGHTNINGCHART/WINFORM] HighLowSeries 클래스 : 스택 영역 차트 그리기 (0) | 2019.09.02 |
[LIGHTNINGCHART/WINFORM] AreaSeries 클래스 : 영역 차트 그리기 (0) | 2019.08.31 |
[LIGHTNINGCHART/WINFORM] FreeformPointLineSeries 클래스 : 에러 막대 차트 그리기 (0) | 2019.08.31 |
[LIGHTNINGCHART/WINFORM] PointLineSeries 클래스 : 2D 라인 차트 그리기 (0) | 2019.08.27 |
[LIGHTNINGCHART/WINFORM] PointLineSeries 클래스 : Y축 분할해 2D 라인 차트 그리기 (0) | 2019.08.27 |
[LIGHTNINGCHART/WINFORM] PointLineSeries 클래스 : 2D 라인 차트 그리기 (0) | 2019.08.27 |
댓글을 달아 주세요