首页 > 解决方案 > HelixToolkit 选择几何

问题描述

我有一个简单的场景,并且希望在用户单击元素时改变元素的颜色。

我尝试了几个选项,包括这篇文章。我还查看了一个完全符合我要求的示例。但由于某种原因,我无法让任何一种解决方案发挥作用。

<Window.DataContext>
        <local:MainViewModel />
</Window.DataContext>
<Grid>
        <h:HelixViewport3D x:Name="view1" ShowFrameRate="True" ZoomExtentsWhenLoaded="True" 
                          ZoomAroundMouseDownPoint="True" RotateAroundMouseDownPoint="True"  >
            <h:SunLight/>
            <ModelVisual3D x:Name="ViewPort" Content="{Binding Model}" />

        </h:HelixViewport3D>
</Grid>
 public class MainViewModel: UIElement3D
    {
        public Model3D Model { get; set; }

        public MainViewModel()
        {
            MeshBuilder mb = new MeshBuilder();
            mb.AddSphere(new Point3D(0, 0, 0), 20, 20, 20);
            MeshGeometry3D msh = mb.ToMesh(true);

            GeometryModel3D geo = new GeometryModel3D(msh, Materials.Blue);
            Model3DGroup model3DGroup = new Model3DGroup();
            model3DGroup.Children.Add(geo);
            this.Model = model3DGroup;
        }

        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            base.OnMouseDown(e);
            if(e.LeftButton == MouseButtonState.Pressed)
            {
                GeometryModel3D geo = Visual3DModel as GeometryModel3D;
                geo.Material = geo.Material == Materials.Blue ? Materials.Red : Materials.Blue;
                e.Handled = true;
            }
        }
    }

我尝试构建的两个选项,但鼠标单击不会影响元素。任何帮助将不胜感激。

标签: c#wpf3dmouseclick-eventhelix-3d-toolkit

解决方案


推荐阅读