public bool bMouseDown = false; // Merker für Status des Mousebuttons
public PointPairList pplSliderList; // globale Punkteliste für die zwei Punkte der Sliderlinie
private void Form1_Load(object sender, EventArgs e)
{
GraphPane myPane = zedGraph.GraphPane;
// Zoom ausschalten, damit man die Linie verschieben kann
zedGraph.IsEnableHZoom = false;
zedGraph.IsEnableVZoom = false;
// andere Kurvenelemente malen
...
// und zuletzt Slider dazu
LineItem liSlider;
pplSliderList = new PointPairList();
pplSliderList.Add(100.0, myPane.YAxis.Scale.Min); // unterer Punkt des Sliders, x-Wert muss ggf. angepasst werden
pplSliderList.Add(100.0, myPane.YAxis.Scale.Max); // oberer Punkt des Sliders, x-Wert muss ggf. angepasst werden
liSlider = myPane.AddCurve("Slider", pplSliderList, Color.Blue, SymbolType.None); // vertikale Sliderlinie malen
liSlider.Label.IsVisible = false; // nicht in der Legende anzeigen
zedGraph.AxisChange();
}
private bool zgc_MouseDownEvent(ZedGraphControl sender, MouseEventArgs e)
{
bMouseDown = true;
DrawLine(sender, e);
return false;
}
private bool zgc_MouseUpEvent(ZedGraphControl sender, MouseEventArgs e)
{
bMouseDown = false;
return false;
}
private bool zgc_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e)
{
if (bMouseDown) DrawLine(sender, e);
return false;
}
private void DrawLine(ZedGraphControl sender, MouseEventArgs e)
{
PointF mousePt = new PointF(e.X, e.Y);
GraphPane pane = sender.MasterPane.FindChartRect(mousePt);
if (pane != null)
{
double x, y;
// Koordinaten im Graphen holen
pane.ReverseTransform(mousePt, out x, out y);
// Werteliste für Slider mit neuen Koordinaten erstellen
pplSliderList.Clear();
pplSliderList.Add(x, pane.YAxis.Scale.Min);
pplSliderList.Add(x, pane.YAxis.Scale.Max);
// neu malen
this.Refresh();
}
}