繁体   English   中英

WPF OxyPlot 缩放问题

[英]WPF OxyPlot Zooming issue

为了在 X 轴和 Y 轴上具有相同的比例,我使用了PlotType.Cartesian以确保:

_model = new PlotModel();
_model.PlotType = PlotType.Cartesian;

我还可以放大和缩小图表。

为了控制缩放,我需要在两个轴上设置AbsoluteMinimumAbsoluteMaximum并指定最小和最大范围。

我遇到的问题:缩放时如何保持相同的比例? 因为轴是独立缩放的,并且通常一个轴与另一个轴不同步(当一个轴达到极限而另一个仍然可以扩展时)。

此外,如何为两个轴设置适当的值,因为如果我设置所有最小值和最大值,我希望设置其他轴上的相应值,如果我使用PlotType.Cartesian ,但它不会发生 - 这就是原因出现问题,因为我无法为两个轴设置适当的值。

我能得到的最接近的是:

  • 订阅PlotView Loaded事件(在本例中为_model字段)

  • 在该方法中获取PlotView ActualHeightActualWidth

有了绘图区域的大小,可以选择所需轴的最小值和最大值,然后进行所有计算以保持两个轴上的比例相同。 例如:

double xMin = -500;
double xMax = 800;
double xRange = xMax - xMin;

double yRange = xRange / ActualWidth * ActualHeight;
double yMin = 58;
double yMax = yMin + yRange;

_model.Axes[0].Minimum = xMin;
_model.Axes[0].AbsoluteMinimum = xMin;

_model.Axes[0].Maximum = xMax;
_model.Axes[0].AbsoluteMaximum = xMax;

// Analogically, define limits of Y axe

此外,使用相同的缩放系数缩放两个轴也很重要!

这将保证两个轴上的比例相等,并通过缩放保持纵横比。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM