public static MarkerPainter CreatePainter(DataMarkerType type, PositionAdapter adapter, Color markerColor, Control.ControlCollection containers) { switch (type) { case DataMarkerType.Square: return(new SquareMarkerPainter(adapter, markerColor, containers)); break; case DataMarkerType.Circle: return(new CircleMarkerPainter(adapter, markerColor, containers)); break; case DataMarkerType.Diamond: return(new DiamondMarkerPainter(adapter, markerColor, containers)); break; case DataMarkerType.Triangle: return(new TriangleMarkerPainter(adapter, markerColor, containers)); break; case DataMarkerType.Cross: return(new CrossMarkerPainter(adapter, markerColor, containers)); break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
protected MarkerPainter(DataMarkerType type, PositionAdapter adapter, Color color, Control.ControlCollection container) { const int defaultMarkerCount = 100; this.Type = type; this._adapter = adapter; this.Color = color; this.Markers = new List <MarkerControl>(defaultMarkerCount); this._container = container; }
internal void Show(IList <double> xValue, IList <double> yValue, Color markerColor, DataMarkerType markerType, EasyChartXAxis.PlotAxis xAxis, EasyChartXAxis.PlotAxis yAxis) { if (null == xValue || null == yValue || 0 == xValue.Count || 0 == yValue.Count || xValue.Count != yValue.Count) { throw new ArgumentException("Invalid Marker data."); } this._shownCount++; if (_painters.Count < _shownCount || markerType != _painters[_shownCount - 1].Type) { MarkerPainter painter = MarkerPainter.CreatePainter(markerType, _adapter, markerColor, _baseChart.Controls); while (_painters.Count > _shownCount) { _painters.RemoveAt(_painters.Count - 1); } _painters.Add(painter); } if (!_isShown) { _adapter.RefreshPosition(); } int index = _shownCount - 1; _painters[index].Initialize(markerColor, MarkerSize, xAxis, yAxis, _parentPlotArea); _painters[index].InitializeMarkerControls(xValue, yValue); _painters[index].RefreshMarkerPosition(); this.IsShown = true; }