У меня есть полярная диаграмма с несколькими сериями. Я хочу иметь функциональность, чтобы щелкнуть по одному из datapoints в любой серии и выполнить что-то. Я попытался использовать HitTest, и он работает в одной серии. Проблема в том, что я использовал на диаграмме с несколькими рядами, а иногда, когда я нажимаю на datapoint, она возвращает другую точку. Пожалуйста помоги.hittest в полярной схеме с несколькими сериями
Это фрагмент, который я использовал.
HitTestResult result = chart1.HitTest(e.X, e.Y, ChartElementType.DataPoint);
if (result.ChartElementType == ChartElementType.DataPoint)
{
var xVal = result.Series.Points[result.PointIndex].XValue;
var yVal = result.Series.Points[result.PointIndex].YValues;
result.Series.Points[result.PointIndex].MarkerColor = Color.Black;
}
обновление:
Спасибо вам так много для подшипников со мной. Во всяком случае, это код, включающий то, что вы предложили.
DataPoint dpCurrent = null;
int normalMarkerSize = 10;
int largeMarkerSize = 15;
private void chart1_MouseClick(object sender, MouseEventArgs e)
{
HitTestResult result = chart1.HitTest(e.X, e.Y, ChartElementType.DataPoint);
if (result.ChartElementType == ChartElementType.DataPoint)
{
dpCurrent = result.Series.Points[result.PointIndex];
if (distance(PolarValueToPixelPosition(dpCurrent, chart1, result.ChartArea), e.Location) <= 5)
result.Series.Points[result.PointIndex].MarkerColor = Color.Black;
}
}
Однако я заметил, что значение «фи» в PolarValueToPixelPosition всегда возвращается NaN
Это здесь работает отлично. Как именно вы знаете, что неправильный маркер окрашен? Может быть, точки перекрываются? Вы понимаете, что hittest передает данные не только при нажатии __marker__, но и на __line__; в диаграмме __polar__ сообщается о точке, которая является __closest__! – TaW
Возможно, вы захотите сделать предварительный просмотр точки в mousemove, установив ее цвет на другой цвет, сделав ее более крупной, пока мышь не исчезнет. – TaW
Привет @TaW, спасибо за ответ. На самом деле, моя карта содержит почти тысячу очков. Я просто скрываю линии, поэтому на графике видны только точки. Есть ли способ, чтобы линии были исключены, когда я нажимаю на диаграмму. Мне просто нужны очки. – overmind