gpt4 book ai didi

c# - 如何从 X 轴上的日期时间值获取像素位置?

转载 作者:行者123 更新时间:2023-12-05 05:18:39 25 4
gpt4 key购买 nike

我正在尝试使用其 X 值 (DateTime) 检索数据点图表上的像素位置。我在绘制图表后使用此代码,但我得到了一个非常大的数字:

DateTime date = ... ; // DateTime of the DataPoint, I verified the date is correct and the chart contains it.    
var pixelsPosition = ChartAreas[0].AxisX.ValueToPixelPosition(date.ToOADate());
// Here pixelsPosition is a very large number, above 600 000.

这些是图表设置:

Series[0].XValueType = ChartValueType.DateTime;
Series[0].IsXValueIndexed = true;

图表有大约 2000 个点。

我使用相同的代码通过 Y 值检索 DataPoint 的像素位置并且它有效。我确定这是一个愚蠢的问题,但我想不通。

Y 轴的工作代码

double yValue = 100;
double pixPositionY = ChartAreas[0].AxisY.ValueToPixelPosition(yValue); // THIS WORKS

我做错了什么?

编辑:我读到 ValueToPixelPosition 方法只适用于 Paint 事件,我试图在 Paint 和 PrePaint 事件上执行它,但我得到了同样的错误。

最佳答案

我找到了解决问题的方法:

DateTime date;
int pixelPositionX = 0;
var point = Series[0].Points.Where(X => X.XValue == date.ToOADate()).FirstOrDefault();
var index = (point != null) ? Series[0].Points.IndexOf(point) : -1;

if (index > -1)
pixelPositionX = (int)ChartAreas[0].AxisX.ValueToPixelPosition(index + 1);

这给了我数据点在屏幕上的正确位置。如果我将数据点索引作为参数而不是转换为 OADate 的日期时间值传递,则 ValueToPixelPosition 有效。我不确定这是否是正确的解决方案,但它对我有用。

关于c# - 如何从 X 轴上的日期时间值获取像素位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com