private void XYPlotCtrl_MouseDown(object sender, MouseEventArgs e) { PlotViewMouseMode mouseMode = MouseMode; if (Control.ModifierKeys == Keys.Shift) { mouseMode = PlotViewMouseMode.Zoom; } else if (Control.ModifierKeys == Keys.Control) { mouseMode = PlotViewMouseMode.Pan; } if (e.Button == MouseButtons.Left) { PtMouseStart = e.Location; PtMouseEnd = PtMouseStart; switch (mouseMode) { case PlotViewMouseMode.None: DrawReversibleCrossLines(PtMouseStart); break; default: break; } } else { PtMouseStart = e.Location; } }
private void XYPlotCtrl_MouseMove(object sender, MouseEventArgs e) { Point ptCurrent = e.Location; if (ptCurrent == PtMouseStart) { return; } //if (Math.Abs(ptCurrent.X - PtMouseStart.X) <= 2 && // Math.Abs(ptCurrent.Y - PtMouseStart.Y) <= 2) return; PlotViewMouseMode mouseMode = MouseMode; if (Control.ModifierKeys == Keys.Shift) { mouseMode = PlotViewMouseMode.Zoom; } else if (Control.ModifierKeys == Keys.Control) { mouseMode = PlotViewMouseMode.Pan; } // Check if the left mouse button is pressed. if (e.Button == MouseButtons.Left) { switch (mouseMode) { case PlotViewMouseMode.Zoom: // erase previous rectangle DrawReversibleRectangle(PtMouseStart, PtMouseEnd); // draw new rectangle DrawReversibleRectangle(PtMouseStart, ptCurrent); break; case PlotViewMouseMode.Pan: // erase previous rectangle //DrawReversibleRectangle(PtMouseStart, PtMouseEnd); DrawReversibleLine(PtMouseStart, PtMouseEnd); // draw new rectangle //DrawReversibleRectangle(PtMouseStart, ptCurrent); DrawReversibleLine(PtMouseStart, ptCurrent); break; case PlotViewMouseMode.Select: // erase previous rectangle DrawReversibleRectangle(PtMouseStart, PtMouseEnd); // draw new rectangle DrawReversibleRectangle(PtMouseStart, ptCurrent); break; case PlotViewMouseMode.None: XYPlot xyPlot = GetXYPlot(PtMouseStart); if (xyPlot != null) { // erase previous cross lines DrawReversibleCrossLines(PtMouseEnd); // draw new cross lines DrawReversibleCrossLines(ptCurrent); } break; default: break; } } PtMouseEnd = ptCurrent; }
private void XYPlotCtrl_MouseUp(object sender, MouseEventArgs e) { //using (new WaitCursor()) { PlotViewMouseMode mouseMode = MouseMode; if (Control.ModifierKeys == Keys.Shift) { mouseMode = PlotViewMouseMode.Zoom; } else if (Control.ModifierKeys == Keys.Control) { mouseMode = PlotViewMouseMode.Pan; } if (e.Button == MouseButtons.Left) { PtMouseEnd = e.Location; XYPlot xyPlot = GetXYPlot(PtMouseStart); if (xyPlot != null) { switch (mouseMode) { case PlotViewMouseMode.Zoom: if (PtMouseStart != Point.Empty) { xyPlot.Zoom(PtMouseStart, PtMouseEnd); DrawReversibleRectangle(PtMouseStart, PtMouseEnd); this.Invalidate(); } break; case PlotViewMouseMode.Pan: if (PtMouseStart != Point.Empty) { xyPlot.Pan(PtMouseStart, PtMouseEnd); //DrawReversibleRectangle(PtMouseStart, PtMouseEnd); DrawReversibleLine(PtMouseStart, PtMouseEnd); this.Invalidate(); } break; //case PlotViewMouseMode.Select: // Select(xyPlot, PtMouseStart, PtMouseEnd); // DrawReversibleRectangle(PtMouseStart, PtMouseEnd); // this.Invalidate(); // break; case PlotViewMouseMode.None: DrawReversibleCrossLines(PtMouseEnd); break; default: break; } } PtMouseStart = Point.Empty; PtMouseEnd = Point.Empty; } } }