Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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 };
        }
Esempio n. 3
0
        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);
        }