private int EnergyScalePlot_MouseDown_Base(PlotModel energyscale_plot, OxyMouseEventArgs e) { int i_s = (int)energyscale_plot.Axes[0].InverseTransform(e.Position.X); double y = energyscale_plot.Axes[1].InverseTransform(e.Position.Y); int selected_index = 0; double closest_dist = double.PositiveInfinity; for (int i_p = 0; i_p < State.Num_Points; i_p++) { double dist = Math.Abs((energyscale_plot.Series[i_p] as OxyPlot.Series.ScatterSeries).Points[i_s].Y - y); if (dist < closest_dist) { closest_dist = dist; selected_index = i_p; } } if (Selected_Point != null) { Selected_Point.Size = 2; Selected_Plot.InvalidatePlot(true); } Selected_Plot = energyscale_plot; Selected_Series = energyscale_plot.Series[selected_index] as OxyPlot.Series.ScatterSeries; Selected_Point = Selected_Series.Points[i_s]; Selected_Index = selected_index; Selected_Point.Size = 4; label_X.Text = "X: " + i_s; label_Y.Text = ", Y: " + Selected_Point.Y; return(i_s); }
private int EnergyScalePlot_MouseMove_Base(PlotModel energyscale_plot, OxyMouseEventArgs e) { Selected_Point.Size = 2; int i_s = (int)energyscale_plot.Axes[0].InverseTransform(e.Position.X); if (i_s > (State.Num_ScaleBins - 1)) { i_s = (State.Num_ScaleBins - 1); } else if (i_s < 0) { i_s = 0; } Selected_Point = Selected_Series.Points[i_s]; Selected_Point.Size = 4; Selected_Plot.InvalidatePlot(true); label_X.Text = "X: " + i_s; label_Y.Text = ", Y: " + Selected_Point.Y; return(i_s); }
private void EnergyScalePlot_MouseLeave(object sender, OxyMouseEventArgs e) { if (Selected_Point != null) { Selected_Point.Size = 2; Selected_Plot.InvalidatePlot(true); Selected_Point = null; Selected_Series = null; Points_Plot.Annotations.Clear(); for (int i_p = 0; i_p < State.Num_Points; i_p++) { Points_Data[i_p].MarkerFill = OxyColors.Black; Points_Data[i_p].LabelFormatString = ""; } Points_Plot.InvalidatePlot(true); } }