我有两张图片并将它们绘制成曲面。我使用ILPlotCube的内置功能通过绘制缩放矩形来缩放一个图像。如何将生成的缩放设置应用于第二个图像programmaticall,即:不用鼠标绘制缩放矩形?
目标是同步两个图像之间的缩放设置。这可能吗?
答案 0 :(得分:0)
用户在2D模式下使用鼠标在绘图立方体上拖动的缩放矩形控制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;
// ...
}
}
另见:
Limits.Set
方法的