public override void Do(IDemoChartControl chartControl) { // Create check marker. var crossMarker = new CrossMarker { Name = "Marker", IsLegendVisible = false }; // Here we'll store our render datas and its snap targets. var snapTargets = new List <ISnapTarget>(); var renderDatas = new List <RenderData> { crossMarker }; ; // Create some visual data. for (int i = 0; i < Sizes.Length; i++) { // Generate vertices. Vector3F[] vertices = GetPositions(Sizes[i]); // Create series. Series series = GetSeries(vertices, ShapeColors[i]); series.Name = $"Series {i}"; renderDatas.Add(series); // Create line snap target. var lineSnapTarget = new LineSnapTarget(vertices, true) { // Specify vertex snap distance (measured in snap context distance units). VertexSnapDistance = 0.025f }; snapTargets.Add(lineSnapTarget); } // Create colletion snap target since we want to snap to several lines. var snapTarget = new CollectionSnapTarget(snapTargets); // Regsiter event listener. chartControl.ActionController.RegisterHandler(1, eventListener = new ChartEventListener(crossMarker, snapTarget)); // Setup chart view options. chartControl.ContextView.Camera2D.Projection = Projection2DTypes.XPosYPos; chartControl.ContextView.Mode2D = true; chartControl.ViewResetOptions.ResetOnDataChanged = false; // Setup chart data source. chartControl.DataSource = renderDatas; }
public override void Do(IDemoChartControl chartControl) { // Create check marker. var crossMarker = new CrossMarker { Name = "Marker", IsLegendVisible = false }; // Randomize points. Vector3F[] points = DemoHelper.GenerateRandomPoints(100, new Vector3F(0f, 0f, 0f), new Vector3F(5f, 5f, 0f)); // Create series markers. var series = new Series { Reader = new DefaultPositionMaskDataReader(points), Thickness = 0, MarkerColor = Colors.DarkRed, MarkerStyle = MarkerStyle.Circle, MarkerSize = 8, Name = "Points" }; // Create snap target. var snapTarget = new PointCollectionSnapTarget(points); // Regsiter event listener. chartControl.ActionController.RegisterHandler(1, eventListener = new ChartEventListener(crossMarker, snapTarget)); // Setup chart view options. chartControl.ContextView.Camera2D.Projection = Projection2DTypes.XPosYPos; chartControl.ContextView.Mode2D = true; chartControl.ViewResetOptions.ResetOnDataChanged = false; // Setup chart data source. chartControl.DataSource = new RenderData[] { crossMarker, series }; }
public override void Do(IDemoChartControl chartControl) { // Generate initial points. initialPoints = DemoHelper.GenerateRandomPoints(PointCount, new Vector3F(0f, 0f, 0f), new Vector3F(5f, 5f, 0f)); currentPoints = new Vector3F[initialPoints.Length]; Array.Copy(initialPoints, currentPoints, currentPoints.Length); // Create check marker. var crossMarker = new CrossMarker { Name = "Marker", IsLegendVisible = false }; // Create series dynamic data reader. dataReader = new DynamicPositionMaskDataReader(currentPoints.Length); dataReader.UpdatePositions(currentPoints); // Create series markers. var series = new Series { Reader = dataReader, Thickness = 0, MarkerColor = Colors.DarkRed, MarkerStyle = MarkerStyle.Circle, MarkerSize = 8, Name = "Points" }; // Create our snap target. snapTarget = new MySnapTarget { Points = currentPoints }; // Regsiter event listener. chartControl.ActionController.RegisterHandler(1, eventListener = new ChartEventListener(crossMarker, snapTarget)); // Setup chart view options. chartControl.ContextView.Camera2D.Projection = Projection2DTypes.XPosYPos; chartControl.ContextView.Mode2D = true; chartControl.ViewResetOptions.ResetOnDataChanged = false; // Setup chart data source. chartControl.DataSource = new RenderData[] { crossMarker, series }; // Start animation. animationHelper.Start( argument => { for (int i = 0; i < currentPoints.Length; i++) { float currentAngle = argument; currentPoints[i] = initialPoints[i] + AnimationRadius * new Vector3F((float)Math.Cos(currentAngle), (float)Math.Sin(currentAngle), 0); } return(argument); }, argument => { dataReader.UpdatePositions(currentPoints); snapTarget.Points = currentPoints; }, 0f, 0.025f, 16); }