c# - 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;
}
}
}
我尝试构建的两个选项,但鼠标单击不会影响元素。任何帮助将不胜感激。
解决方案
推荐阅读
- java - Java - 获取对象的所有本地字段值作为映射
- spring - 如何让我的 Spring Boot 应用程序接受绝对 uri?
- android - Webview 不显示谷歌地图完全控制按钮
- java - 使用嵌套 if else 和 switch 语句重构代码的设计模式
- json - Swift - 将类型动态传递给 JSONDecoder
- sql - PostgreSQL 多行作为列
- tensorflow - 在 python 中加载 tensorflow-gpu 似乎会强制我的 Windows 计算机在使其进入睡眠状态后重新启动
- android - 从 JSON 响应改造中获取字符串数据
- c++ - 如何删除cin后的一行?
- ios - 如何在越狱的 iOS 环境中对所有其他应用程序进行浮动视图?