猿问

图表:PixelPositionToValue 在查找 x、y 坐标时不准确

我试图在一个小显示器中显示图表数据的 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 和图像:


图像


杨__羊羊
浏览 281回答 1
1回答

jeck猫

除非您的鼠标具有惊人的准确性,否则您永远不会看到精确的 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];    }}
随时随地看视频慕课网APP
我要回答