Esempio n. 1
0
 void _dragHelper_DragDelta(object sender, C1DragDeltaEventArgs e)
 {
     if (moving != null)
     {
         Point position = e.GetPosition(Chart.View.Viewport);
         position.X -= offset.X;
         position.Y -= offset.Y;
         if (moving.Attach != ChartPanelAttach.None)
         {
             MeasureOption x = MeasureOption.X;
             if (moving.Attach == ChartPanelAttach.DataY)
             {
                 x = MeasureOption.Y;
             }
             else if (moving.Attach == ChartPanelAttach.DataXY)
             {
                 x = MeasureOption.XY;
             }
             int seriesIndex = -1;
             int pointIndex  = -1;
             DataDistanceFromPoint(position, x, out seriesIndex, out pointIndex);
             if ((seriesIndex >= 0) && (pointIndex >= 0))
             {
                 position = Chart.View.DataIndexToPoint(seriesIndex, pointIndex);
             }
         }
         position = Chart.View.PointToData(moving.AxisX, moving.AxisY, position);
         moving.SetPoint(position);
         base.InvalidateArrange();
     }
 }
Esempio n. 2
0
        double DataDistanceFromPoint(Point pt, MeasureOption measureOption, out int seriesIndex, out int pointIndex)
        {
            int    num = Chart.Data.Children.Count;
            double naN = double.NaN;

            seriesIndex = -1;
            pointIndex  = -1;
            for (int i = 0; i < num; i++)
            {
                double distance = 0.0;
                int    num5     = Chart.View.DataIndexFromPoint(pt, i, measureOption, out distance);
                if (double.IsNaN(naN) || (distance < naN))
                {
                    naN         = distance;
                    seriesIndex = i;
                    pointIndex  = num5;
                }
            }
            return(naN);
        }
Esempio n. 3
0
        void ChartPanel_MouseMove(object sender, PointerRoutedEventArgs e)
        {
            int  num  = Children.Count;
            bool flag = false;

            for (int i = 0; i < num; i++)
            {
                ChartPanelObject obj2 = Children[i];
                if (obj2.Action == ChartPanelAction.MouseMove)
                {
                    Point position = e.GetPosition(Chart.View.Viewport);
                    if (obj2.Attach != ChartPanelAttach.None)
                    {
                        int           num3;
                        int           num4;
                        MeasureOption x = MeasureOption.X;
                        if (obj2.Attach == ChartPanelAttach.DataY)
                        {
                            x = MeasureOption.Y;
                        }
                        else if (obj2.Attach == ChartPanelAttach.DataXY)
                        {
                            x = MeasureOption.XY;
                        }
                        DataDistanceFromPoint(position, x, out num3, out num4);
                        if ((num3 >= 0) && (num4 >= 0))
                        {
                            position = Chart.View.DataIndexToPoint(num3, num4);
                        }
                    }
                    position = Chart.View.PointToData(obj2.AxisX, obj2.AxisY, position);
                    obj2.SetPoint(position);
                    flag = true;
                }
            }
            if (flag)
            {
                base.InvalidateArrange();
            }
        }
Esempio n. 4
0
        public int DataIndexFromPoint(Point pt, int seriesIndex, MeasureOption option, out double distance)
        {
            distance = double.MaxValue;
            if (seriesIndex >= _chart.Data.Children.Count)
            {
                return(-1);
            }
            DataSeries ds = _chart.Data.Children[seriesIndex];

            double[,] values = ds.GetValues();
            if (values == null)
            {
                return(-1);
            }
            PointD td  = PointToData(ds, pt);
            int    num = 0;
            double y   = td.Y;

            if (option == MeasureOption.X)
            {
                num = 1;
                y   = td.X;
            }
            else if (option == MeasureOption.XY)
            {
                num = 2;
            }
            int    num3      = -1;
            int    length    = values.GetLength(0);
            Axis   axisX     = GetAxisX(ds);
            Axis   axisY     = GetAxisY(ds);
            double actualMin = axisX.ActualMin;
            double actualMax = axisX.ActualMax;
            double num7      = axisY.ActualMin;
            double num8      = axisY.ActualMax;

            if (values != null)
            {
                int num9 = values.GetLength(1);
                for (int i = 0; i < num9; i++)
                {
                    double d     = (length > 1) ? values[1, i] : ((double)i);
                    double num12 = values[0, i];
                    if (((d >= actualMin) && (d <= actualMax)) && ((num12 >= num7) && (num12 <= num8)))
                    {
                        if (num == 2)
                        {
                            if (!double.IsNaN(d) && !double.IsNaN(num12))
                            {
                                PointD td2   = PointFromData(ds, new PointD(d, num12));
                                double num13 = td2.X - pt.X;
                                double num14 = td2.Y - pt.Y;
                                double num15 = Math.Sqrt((num13 * num13) + (num14 * num14));
                                if (num15 < distance)
                                {
                                    distance = num15;
                                    num3     = i;
                                }
                            }
                        }
                        else
                        {
                            double num16 = (num == 1) ? d : num12;
                            if (!double.IsNaN(num16))
                            {
                                double num17 = Math.Abs((double)(num16 - y));
                                if (num17 < distance)
                                {
                                    distance = num17;
                                    num3     = i;
                                }
                            }
                        }
                    }
                }
            }
            if (distance != double.MaxValue)
            {
                if (option == MeasureOption.X)
                {
                    distance = _viewport.ConvertX(distance) - _viewport.ConvertX(0.0);
                    return(num3);
                }
                if (option == MeasureOption.Y)
                {
                    distance = _viewport.ConvertY(distance) - _viewport.ConvertY(0.0);
                }
            }
            return(num3);
        }