예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
            }
        }