gpt4 book ai didi

c# - 在键/鼠标事件后禁用 OxyPlot PlotView 最大/最小值

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:29 30 4
gpt4 key购买 nike

我有一个 Wpf 应用程序,它显示一个 plotview,还有一个按钮,它调用一个函数来根据其数据自动缩放绘图。我遇到的问题是,如果我使用键盘或鼠标与 plotview 交互以平移/缩放,我的自动缩放按钮(仅设置轴的最大值和最小值)不会导致 plotview明显地改变。我已确认对象本身修改了最大/最小值,但这些更改未显示在 plotview 中。

public class ViewModel
{
public const int maxSamples = 45000;
public ViewModel()
{
this.PlotModel = new PlotModel();

// the x-axis
this.PlotModel.Axes.Add(new OxyPlot.Axes.LinearAxis {
Position = OxyPlot.Axes.AxisPosition.Bottom,
AbsoluteMinimum = 0,
AbsoluteMaximum = maxSamples,
Minimum = 0,
Maximum = maxSamples
});

// the y-axis
this.PlotModel.Axes.Add(new OxyPlot.Axes.LinearAxis {
Position = OxyPlot.Axes.AxisPosition.Left,
Minimum = -100,
Maximum = 200
});
}

public PlotModel Ch1Model { get; private set; }

public void AutoZoom()
{
double max;
double min;

// some code to determine the max/min values for the y-axis
// ...

((LinearAxis)PlotModel.Axes[1]).Maximum = max;
((LinearAxis)PlotModel.Axes[1]).Minimum = min;

PlotModel.InvalidatePlot(true);
}
}

再次调用 AutoZoom() 直到我使用鼠标/键盘与 plotview 交互,然后 AutoZoom 设置轴上的最大/最小值,但显示不更新。关于我可能哪里出错的任何想法?

最佳答案

我知道这个问题已经有一段时间没有答案了,但当我遇到同样的问题时,我发现它仍然相关。

Axis 对象内部,有一个 ViewMinimumViewMaximum 被初始化为 double.NaN .一旦您使用鼠标进行平移、缩放等操作,这些值就会设置为平移/缩放操作结束时的任何值。然后,在 Axis 对象的任何后续重绘中,这些值的优先级高于 MinimumMaximum

为了让 PlotView 遵循指定的 MinimumMaximum,您必须通过调用其 Reset 来重置轴() 方法,然后将值分配给 MinimumMaximum。另请注意,一旦您设置了 MinimumMaximum,如果 PlotType 设置为,OxyPlot 将在 X 轴和 Y 轴上使用相同的缩放比例笛卡尔。要没有这个,请将 ModelPlotType 设置为 PlotType.XY

例如:

public void AutoZoom()
{
double max;
double min;

// some code to determine the max/min values for the y-axis
// ...

PlotModel.Axes[1].Reset(); //Reset the axis to clear ViewMinimum and ViewMaximum

((LinearAxis)PlotModel.Axes[1]).Maximum = max;
((LinearAxis)PlotModel.Axes[1]).Minimum = min;

PlotModel.InvalidatePlot(true);
}

关于c# - 在键/鼠标事件后禁用 OxyPlot PlotView 最大/最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317097/

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