以编程方式在 ILNumerics ILPlotCube 上应用缩放

Programmatically applying zoom on ILNumerics ILPlotCube

我有两个图像并将它们绘制为曲面。我正在使用 ILPlotCube 的内置功能通过绘制缩放矩形来缩放一张图像。如何以编程方式将生成的缩放设置应用到第二个图像,即:不使用鼠标绘制缩放矩形?

目标是同步两个图像之间的缩放设置。这可能吗?

用户在二维模式下用鼠标在绘图立方体上拖动的缩放矩形控制 ILPlotCube.Limits 设置。可以通过编程方式实现相同的结果:

Vector3 min = new Vector3(minX, minY, minZ); 
Vector3 max = new Vector3(maxX, maxY, maxZ); 

// fetch the plot cube and set its limits (see below)
var plotCube = panel1.SceneSynchRoot.First<ILPlotCube>();     
plotCube.Limits.Set(minX, maxX); 

您可能还需要考虑 scene management 上提供的信息:如果您在全局场景上设置限制,它将影响 所有 个场景,无论用于渲染场景的驱动程序。考虑使用面板的 panel.SceneSynchRoot 来找到用于渲染的绘图立方体并在此处设置限制。同样,这将与使用鼠标设置缩放矩形具有相同的效果 - 这也会改变 单独同步场景 的绘图立方体限制(对于每个驱动程序单独)但不会改变全球场景。

如果您想跟踪鼠标交互引起的修改,您可以在绘图立方体上使用鼠标事件并在将它们应用到新图像之前读取当前限制:

 Vector3 min, max; 
 plotcube.MouseUp += (_s,_a) => {
    if (_a.DirectionUp) {
       var plotCube = ilPanel1.SceneSynchRoot.First<ILPlotCube>(); 
       // keep current limits for later use (here we store them in the class context only)
       min = plotCube.Limits.Min; 
       max = plotCube.Limits.Max;
       // ... 
    }
 }  

另请参阅:

APIDOC class 关于 Limits.Set 方法的参考,

Mouse events documentation