728x90
차트가 있고 포인터가 포인트에있을 때 사용자가 값을 볼 수 있기를 바랍니다.
finding the value of the points in a chart 페이지에서 digEmAll의 도움말을 사용하여 다음 코드를 작성할 수 있습니다.
위의 코드를 사용하면 포인터가 시리즈에 가까울 때 값을 볼 수 있지만 포인터가 포인트에있을 때만 값을 볼 수있는 방법은 무엇입니까?
나는 바꿨다
대신에
내 문제를 해결하기 위해 그러나 유용하지 않았습니다.
finding the value of the points in a chart 페이지에서 digEmAll의 도움말을 사용하여 다음 코드를 작성할 수 있습니다.
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart1.HitTest(pos.X, pos.Y, false, ChartElementType.PlottingArea);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.PlottingArea)
{
chart1.Series[0].ToolTip = "X=#VALX, Y=#VALY";
}
}
}
위의 코드를 사용하면 포인터가 시리즈에 가까울 때 값을 볼 수 있지만 포인터가 포인트에있을 때만 값을 볼 수있는 방법은 무엇입니까?
나는 바꿨다
int k = result.PointIndex;
if (k >= 0)
{
chart1.Series[0].Points[k].ToolTip = "X=#VALX, Y=#VALY";
}
대신에
chart1.Series[0].ToolTip = "X=#VALX, Y=#VALY";
내 문제를 해결하기 위해 그러나 유용하지 않았습니다.
답
이 방법으로 코드를 수정해야합니다.
아이디어는 마우스가 포인트와 매우 가까운 지 확인하는 것입니다. 2 주변의 픽셀은 (정확히 포인트에 있지 않을 가능성이 높으므로) 툴팁을 표시합니다.
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart1.HitTest(pos.X, pos.Y, false,
ChartElementType.DataPoint);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.DataPoint)
{
var prop = result.Object as DataPoint;
if (prop != null)
{
var pointXPixel = result.ChartArea.AxisX.ValueToPixelPosition(prop.XValue);
var pointYPixel = result.ChartArea.AxisY.ValueToPixelPosition(prop.YValues[0]);
// check if the cursor is really close to the point (2 pixels around the point)
//if (Math.Abs(pos.X - pointXPixel) < 2 && Math.Abs(pos.Y - pointYPixel) < 2)
//{
tooltip.Show("X=" + prop.XValue + ", Y=" + prop.YValues[0], this.chart1,
pos.X, pos.Y - 15);
//}
}
}
}
}
아이디어는 마우스가 포인트와 매우 가까운 지 확인하는 것입니다. 2 주변의 픽셀은 (정확히 포인트에 있지 않을 가능성이 높으므로) 툴팁을 표시합니다.