我想在 WPF 项目(建筑框架(中使用 helixtoolkit 可视化线框 3D 模型。 元素应该是可单击的,以便用户可以与它们进行交互。 此外,当鼠标悬停在对象上方时,它们的颜色应该会改变。 所以基本上我需要鼠标进入/离开和鼠标按下事件。我不知道图书馆没有实现事件。有什么方法可以通过继承 LinesVisual3D 类将这些事件添加到自定义类中?
附言我在想也许可以编写自己的路由事件,这可能吗? 我也感谢关于如何使用其他工具而不是螺旋来实现这一点的任何想法。
我找到了答案,所以我把它贴在这里。 所以基本上如果你想在你的对象上使用鼠标事件,你应该从UIElement3D类继承,它有很多内置的事件。 使用网格生成器创建 3D 实体,将其添加到 GeometryModel3D 类型的几何属性中。,然后将类的 Visual3DModel 属性设置为等于 GeometryModel3D 对象。
public class Structural3D : UIElement3D
{
public Structural3D()
{
var modelMesh = new MeshBuilder();
modelMesh.AddBox(new Point3D(1, 1, 1), 0.5, 0.5, 2);
var geometryModel3D = new GeometryModel3D();
geometryModel3D.Geometry = modelMesh.ToMesh();
geometryModel3D.Material = Material;
Visual3DModel = geometryModel3D;
}
}
现在您可以覆盖鼠标处理程序
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
//do something here, change color, etc
base.OnMouseLeftButtonDown(e);
}