private static void SetChartControlState(Chart sender, MSChartExtensionToolState state)
        {
            ChartTool[(Chart)sender].ToolState         = state;
            sender.ChartAreas[0].CursorX.IsUserEnabled = false;
            sender.ChartAreas[0].CursorY.IsUserEnabled = false;
            switch (state)
            {
            case MSChartExtensionToolState.Select:
                sender.Cursor = Cursors.Cross;
                sender.ChartAreas[0].CursorX.IsUserEnabled = true;
                sender.ChartAreas[0].CursorY.IsUserEnabled = true;
                break;

            case MSChartExtensionToolState.Zoom:
            case MSChartExtensionToolState.ZoomX:
                sender.Cursor = Cursors.Cross;
                break;

            case MSChartExtensionToolState.Pan:
                sender.Cursor = Cursors.Hand;
                break;
            }
        }
 private static void SetChartControlState(Chart sender, MSChartExtensionToolState state)
 {
     ChartTool[(Chart)sender].ToolState = state;
     sender.ChartAreas[0].CursorX.IsUserEnabled = false;
     sender.ChartAreas[0].CursorY.IsUserEnabled = false;
     switch (state)
     {
         case MSChartExtensionToolState.Select:
             sender.Cursor = Cursors.Cross;
             sender.ChartAreas[0].CursorX.IsUserEnabled = true;
             sender.ChartAreas[0].CursorY.IsUserEnabled = true;
             break;
         case MSChartExtensionToolState.Zoom:
         case MSChartExtensionToolState.ZoomX:
             sender.Cursor = Cursors.Cross;
             break;
         case MSChartExtensionToolState.Pan:
             sender.Cursor = Cursors.Hand;
             break;
     }
 }
Пример #3
0
 /// <summary>
 /// SetToolState
 /// </summary>
 public static void SetToolState(this Chart sender, MSChartExtensionToolState state)
 {
     SetChartControlState(sender, state);
 }
        private static void ChartControl_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button != System.Windows.Forms.MouseButtons.Left)
            {
                return;
            }
            MouseDowned = false;

            Chart     ptrChart              = (Chart)sender;
            ChartArea ptrChartArea          = ptrChart.ChartAreas[0];
            ChartData data                  = GetDataForChart(ptrChart);
            MSChartExtensionToolState state = data.ToolState;

            switch (state)
            {
            case MSChartExtensionToolState.Zoom:
            case MSChartExtensionToolState.ZoomX:

                //Zoom area (Pixel)
                double XStart = ptrChartArea.CursorX.SelectionStart;
                double XEnd   = ptrChartArea.CursorX.SelectionEnd;
                double YStart = ptrChartArea.CursorY.SelectionStart;
                double YEnd   = ptrChartArea.CursorY.SelectionEnd;

                if ((XStart == XEnd) && (YStart == YEnd))
                {
                    return;
                }

                //Zoom area for X Axis
                double left  = Math.Min(XStart, XEnd);
                double right = Math.Max(XStart, XEnd);
                double XMin  = ptrChartArea.AxisX.ValueToPosition(left);
                double XMax  = ptrChartArea.AxisX.ValueToPosition(right);

                //Zoom area for Y Axis
                double bottom = Math.Min(YStart, YEnd);
                double top    = Math.Max(YStart, YEnd);
                double YMin   = ptrChartArea.AxisY.ValueToPosition(bottom);
                double YMax   = ptrChartArea.AxisY.ValueToPosition(top);


                // NOTE: left <= right, even if Axis.IsReversed

                //X-Axis
                ptrChartArea.AxisX.ScaleView.Zoom(left, right);
                ptrChartArea.AxisX2.ScaleView.Zoom(
                    ptrChartArea.AxisX2.PositionToValue(XMin),
                    ptrChartArea.AxisX2.PositionToValue(XMax));

                //Y-Axis
                if (state == MSChartExtensionToolState.Zoom)
                {
                    ptrChartArea.AxisY.ScaleView.Zoom(bottom, top);
                    ptrChartArea.AxisY2.ScaleView.Zoom(
                        ptrChartArea.AxisY2.PositionToValue(YMin),
                        ptrChartArea.AxisY2.PositionToValue(YMax));
                }

                //Clear selection (the following seem to be equivalent)
                ptrChartArea.CursorX.SetSelectionPosition(0, 0);
                ptrChartArea.CursorY.SetSelectionPosition(0, 0);
                //ptrChartArea.CursorX.SelectionStart = ptrChartArea.CursorX.SelectionEnd;
                //ptrChartArea.CursorY.SelectionStart = ptrChartArea.CursorY.SelectionEnd;

                //NOTE: At this point, the scaled view has already been updated to reflect zoom
                OnZoomChanged(ptrChart);
                break;

            case MSChartExtensionToolState.Pan:
                break;
            }
        }
 private static void SetChartControlState(Chart sender, MSChartExtensionToolState state)
 {
     ChartTool[(Chart)sender].ToolState = state;
     UpdateChartControlState(sender);
 }