Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSCharts PixelPositionToValue不';对于对数x轴,t似乎不起作用_C#_.net_Forms_Charts_Mschart - Fatal编程技术网

C# MSCharts PixelPositionToValue不';对于对数x轴,t似乎不起作用

C# MSCharts PixelPositionToValue不';对于对数x轴,t似乎不起作用,c#,.net,forms,charts,mschart,C#,.net,Forms,Charts,Mschart,我正在使用MSCharts,并已将x轴IsLogarithmic设置为true。我遇到的第一个问题是图表在第一次显示时崩溃了 我在以下网站找到了答案: 及 因此,我不会在设计时设置isLogarithmic,而是在运行时设置,当我有一个系列时: 没有X值的X值我发现了以下文章: 这表明,要使PixelPositionToValue在绘制事件之外工作,需要在图表区域调用ReCalc()。ReCalc()在我的MSChart版本中不存在,但有一个函数RecreacteAxesCale(

我正在使用MSCharts,并已将x轴IsLogarithmic设置为true。我遇到的第一个问题是图表在第一次显示时崩溃了

我在以下网站找到了答案:

因此,我不会在设计时设置isLogarithmic,而是在运行时设置,当我有一个系列时:


  • 没有X值的X值我发现了以下文章:

    这表明,要使PixelPositionToValue在绘制事件之外工作,需要在图表区域调用ReCalc()。ReCalc()在我的MSChart版本中不存在,但有一个函数RecreacteAxesCale()(请参阅),调用它似乎可以修复不一致的行为


    不幸的是,如果轴是对数的,我仍然需要将该值转换为线性,但至少现在可以预测其行为。

    我找到了以下文章:

    这表明,要使PixelPositionToValue在绘制事件之外工作,需要在图表区域调用ReCalc()。ReCalc()在我的MSChart版本中不存在,但有一个函数RecreacteAxesCale()(请参阅),调用它似乎可以修复不一致的行为


    不幸的是,如果轴是对数的,我仍然需要将值转换为线性,但至少现在行为是可预测的。

    示例已删除。您需要认真对待此注释,轴映射是惰性完成的。直到油漆好了才需要钉牢。它可能在第一次绘制之后工作,但由于绘制是一项低优先级任务,因此仍有可能获得过时的值。只有GetPosition()才是真正安全的。@Hans:谢谢这一点-这促使我在网络上进一步挖掘,并且我找到了一个解决不一致计算方法的正确方法(尽管我仍然不希望对数轴和线性轴有不同的代码)。请参阅下面我的答案。示例已删除。您需要认真对待此注释,轴映射是惰性完成的。直到油漆好了才需要钉牢。它可能在第一次绘制之后工作,但由于绘制是一项低优先级任务,因此仍有可能获得过时的值。只有GetPosition()才是真正安全的。@Hans:谢谢这一点-这促使我在网络上进一步挖掘,并且我找到了一个解决不一致计算方法的正确方法(尽管我仍然不希望对数轴和线性轴有不同的代码)。看到我下面的答案。虽然这个问题看起来很死板,但当我在谷歌上搜索“PixelPositionToValue对数”时,它实际上是最好的结果。这个Q/A对非常有用-做得好dominic!虽然这个问题看起来很死板,但当我在谷歌上搜索“PixelPositionToValue对数”时,它实际上是最重要的结果。这个Q/A对非常有用——干得好,多米尼克!
    int GetXValue(MouseEventArgs e, Axis axis)
    {
     return axis.IsLogarithmic ?
       Math.Pow(axis.LogarithmBase, axis.PixelPositionToValue(e.X)) :
       axis.PixelPositionToValue(e.X)
    }