gpt4 book ai didi

c# - WPF Helix如何在代码中使用 "zoom extent"viewport3d?

转载 作者:行者123 更新时间:2023-11-30 23:15:14 24 4
gpt4 key购买 nike

所以我的“ View ”程序集中有这个 xaml 代码:

<helix:HelixViewport3D ZoomExtentsWhenLoaded="True"
ShowCoordinateSystem="True"
IsMoveEnabled="False"
Margin="5,5,5,0">
<helix:HelixViewport3D.Camera>
<OrthographicCamera LookDirection="1,1,-1"
Position="{Binding CameraPosition}"
UpDirection="0,0,1">
</OrthographicCamera>
</helix:HelixViewport3D.Camera>
<ModelVisual3D Content="{Binding Lights}"/>
<local:ScatterPlotVisual3D Points="{Binding Data}"
SolutionPoints="{Binding Solution}"
SurfaceBrush="{Binding SurfaceBrush}"/>
</helix:HelixViewport3D>

在“view-model”组件中,我将一些数据加载到 ScatterPlotVisual3D 中,它创建了新的绘图(显示一些点、边界框、标签等):

private Model3D CreateModel()
{
var plotModel = new Model3DGroup();
if (Points == null && SolutionPoints == null) return plotModel;

List<Point3D> allPoints = new List<Point3D>();

if (Points != null && Points.Length != 0)
{
plotModel.Children.Add(CreatePointsModel(Points, Brushes.Green));
allPoints.AddRange(Points);
}

if (SolutionPoints != null && SolutionPoints.Length != 0)
{
plotModel.Children.Add(CreatePointsModel(SolutionPoints, Brushes.Red));
allPoints.AddRange(SolutionPoints);
}

CreateBoundaryAxis(plotModel, allPoints);

return plotModel;
}

因此,我需要做的是在我加载数据时强制 HelixViewport3D“执行”ZoomExtents()(或任何其他类似的缩放相机以适合模型的方法)。
问题:我无法调用 ZoomExtents(),因为我没有对在我的 XAML 中声明的 helix:HelixViewport3D 的任何引用

最佳答案

您可以在 C# 代码中创建对 Helixviewport 的引用,方法是在 xaml 中为其分配一个名称:

<helix:HelixViewport3D Name="NameYouChoose"
ZoomExtentsWhenLoaded="True"
ShowCoordinateSystem="True"
IsMoveEnabled="False"
Margin="5,5,5,0">

然后在 C# 代码中,在更新子项后简单地调用以下命令。

NameYouChoose.ZoomExtents()

关于c# - WPF Helix如何在代码中使用 "zoom extent"viewport3d?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42693786/

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