przy użyciu C# z wykresem .NET.Uzyskaj wartość Y dla serii wykresów .NET z wartości X
Próbuję wykreślić kilka przebiegów i chcę przesunąć kursor myszy po obszarze wykresu i poproszę o wyświetlanie wartości Y każdej serii na wykresie w tej lokalizacji wartości X.
| at xValue 12 | |
| _ = 3 | |
| * = 2 | * * |
| ________|______________________________*_____ |
| / | * |
| __________*/*********|***************************** |
| * | |
| * | |
|______________________|_____________________________________|
Trochę jak ten schemat powyżej. Poniżej znajduje się wersja mojego kodu:
void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
_point.X = e.Location.X;
_point.Y = e.Location.Y;
try
{
if ((chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X) >= 0) && (chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X) <= max))
{
//Crossair
chart1.ChartAreas[0].CursorX.SetCursorPixelPosition(_point, true);
//Tooltips
double xValue = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X);
double yValue = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
string all_Data_Values = "";
foreach (var series in chart1.Series)
{
all_Data_Values = all_Data_Values + Environment.NewLine + series.Name + ": " + yValue;
}
tooltip.Show("At " + Math.Truncate(xValue * 1000)/1000 + all_Data_Values, this.chart1, pos.X - 40, pos.Y - 20);
}
}
catch (Exception exception)
{
//
}
}
To co mam, a teraz to tylko wyświetla wartość Y mojego położenia kursora myszy. Próbowałem innych kodów, próbując jakoś mapować wartości x na chart1.Series [], ale to też nie działa.
Rozważ użycie ZedGraph, nie jest zły. – David
Czy próbowałeś przejść przez kod z debuggerem, aby zobaczyć, co dzieje się nie tak? –
Wygląda dokładnie tak jak dla mnie - Mam podobny kod (z wyjątkiem otrzymania wartości X, szukam go w serii, aby uzyskać najbliższą rzeczywistą wartość). Czy masz jakieś wyjątki? Czym jest "max"? –