C# 鼠标滚轮时oxyplot轴锁定中心

C# 鼠标滚轮时oxyplot轴锁定中心,c#,axis,mousewheel,oxyplot,C#,Axis,Mousewheel,Oxyplot,我是wpf和oxyPlot的新手。 现在,我想创建一个类似示波器的动态折线图,但我不知道如何在鼠标滚轮缩放时将轴锁定在一个值上 示例: 红点是鼠标的位置。在正常情况下,缩放A->B,缩放C->D。现在,我想缩放C->E,就像鼠标在0中心的位置一样。我找到了一个解决方案,可以阻止轴缩放中心。您必须创建一个自定义的LinearAxis来实现这一点: public class FixedCenterLinearAxis : LinearAxis { double center = 0;

我是wpf和oxyPlot的新手。 现在,我想创建一个类似示波器的动态折线图,但我不知道如何在鼠标滚轮缩放时将轴锁定在一个值上

示例:


红点是鼠标的位置。在正常情况下,缩放A->B,缩放C->D。现在,我想缩放C->E,就像鼠标在0中心的位置一样。

我找到了一个解决方案,可以阻止轴缩放中心。您必须创建一个自定义的
LinearAxis
来实现这一点:

public class FixedCenterLinearAxis : LinearAxis
{
    double center = 0;
    public FixedCenterLinearAxis() : base(){}

    public FixedCenterLinearAxis(double _center) : base()
    {
        center = _center;
    }

    public override void ZoomAt(double factor, double x)
    {
        base.ZoomAt(factor, center);
    }
}
你必须这样使用它:

var bottomAxis = new FixedCenterLinearAxis(0.5) //specify the center value here
{
    Position = AxisPosition.Bottom,
};

plotModel.Axes.Add(bottomAxis);

如果你不在构造函数上指定一个值,那么中心值将是0。

你知道吗,如果你用指针在一个轴上缩放,只有那个轴会缩放?@Kirenenko我知道,但不是我的意思。如果我将指针指向一个轴,可能我希望它在中心值上缩放。那么你想做什么,阻止垂直轴?也许一张图片/gif显示你想要实现的目标会有所帮助。红点是鼠标的位置。在正常情况下,缩放A->B,缩放C->D。现在,我想缩放C->E,就像鼠标在0中心的位置一样。@kirennko Thx.Thx。这是工作。但我有两个问题。1.直接使用
ZoomAt()
ZoomAtCenter()
有什么不同?2.如果中心值不是0,当我缩放时,中心值几乎消失。起初我尝试在覆盖函数中使用
ZoomAtCenter
。但是它调用ZoomAt,所以它会导致一个无限循环。也可以随意接受正确的答案。