我试图在一个小显示器上显示图表数据的X和Y坐标。一切正常,但显示的数据不准确。
这是下面的代码:
var results = chart1.HitTest(e.X, e.Y, false, ChartElementType.PlottingArea);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.PlottingArea)
{
yValue = chart1.ChartAreas[0].AxisY2.PixelPositionToValue(e.Y);
xValue = chart1.ChartAreas[0].AxisX2.PixelPositionToValue(e.X);
}
}
if (OverlapcheckBox1.Checked)
{
int val = Convert.ToInt16(yValue / 24);
yValue = yValue - 24 * val;
}
if (Cursor1checkBox.Checked && ClickMouse)
{
V1textBox1.Text = string.Concat(string.Concat(yValue).ToString());
}
if (Cursor2checkBox.Checked && ClickMouse)
{
V2textBox2.Text = string.Concat(string.Concat(yValue).ToString());
}
图像显示光标在10处,但V1中的值为9.88 还有一张图片:
答案 0 :(得分:0)
除非您的鼠标具有惊人的精度,否则您永远不会看到精确的10.000。您可以四舍五入:
private void Chart1_MouseClick(object sender, MouseEventArgs e) {
double yValue = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
yValue = Math.Round(yValue, 0);
}
或者您希望在光标单击位置附近找到数据点?
private void Chart1_MouseClick(object sender, MouseEventArgs e) {
HitTestResult result = chart1.HitTest(e.X, e.Y);
if (result.ChartElementType == ChartElementType.DataPoint) {
DataPoint point = (DataPoint)result.Object;
double yValue = point.YValues[0];
}
}