ModelUIElment3D
UIElment3D是.NET3.5新增的类,替代了ModelVisual3D。ModelVisual3D有2个派生类ModelUIElment3D和ContainerUIElment3D。ModelUIElment3D跟ModelVisual3D最大的不同就是,不需要使用HItTest来检测鼠标点击的某个具体的3D对象模型。取而代之是标准2D事件名MouseLeftButtonDown。

新建WPF项目
打开Vs2015,新建一个WPF项目工程,新建一个窗体MainWindow。

设置背景颜色
<Grid.Background>
<DrawingBrush Viewport="0,0,0.05,0.05" TileMode="FlipXY">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Black" Geometry="M0,0 L1,0 L1,1 L0,1" />
<GeometryDrawing Brush="DarkBlue" Geometry="M0,0.5 L0.5,0.5 L0.5,1 L0,1" />
<GeometryDrawing Brush="DarkBlue" Geometry="M0.5,0 L1,0 L1,0.5 L0.5,0.5" />
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Grid.Background>

增加 Viewport3D
<Viewport3D>
<Viewport3D.Camera>
<PerspectiveCamera Position="0,0,7" LookDirection="0,0,-1"/>
</Viewport3D.Camera>
</Viewport3D>

增加ModelUIElement3D
<Viewport3D.Children>
<ModelUIElement3D x:Name="model" MouseLeftButtonDown="model_MouseLeftButtonDown" >
<ModelUIElement3D.Model>

<GeometryModel3D x:Name="Teapot">
<GeometryModel3D.Material>
<EmissiveMaterial Brush="Red" />
</GeometryModel3D.Material>

<GeometryModel3D.Geometry>此处是模型数据,省略,一般由ZAM3D绘制或者3dmaxobj导入自动生成。。
</GeometryModel3D.Geometry>
</GeometryModel3D>

</ModelUIElement3D.Model>
</ModelUIElement3D>
</Viewport3D.Children>

编写鼠标响应事件代码
private void model_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("点击的是1");
}

WPF基于3D对象捕获鼠标点击事件的更多相关文章

  1. WPF中C#代码触发鼠标点击事件

    1.如下代码; <Button x:Name="btnTest" Click="btnTest_Click"> <Button.Trigger ...

  2. JS控制鼠标点击事件

    鼠标点击事件就是当鼠标点击元素时,就会出现另一个窗口,类似于百度首页中右上角的“登录”这个按钮,当鼠标点击 登录时,就会出现登录窗口.大体的意思就是这样,直接上代码了,简单易懂. <!DOCTY ...

  3. css禁用鼠标点击事件

    css禁用鼠标点击事件 .disabled { pointer-events: none; } <div class="main-container disabled"> ...

  4. MacOS获取辅助功能权限控制鼠标点击事件

    昨晚玩一个模拟经营的游戏,由于升级太慢我就不停的种树卖树来换取经验值.不过重复点击10几分钟后,实在受不了.网上本来准备找个鼠标自动点击的软件用用.结果没找到趁手的.如是自己写了个. 自己设置需要点击 ...

  5. Echarts如何添加鼠标点击事件?防止重复触发点击事件

    Echarts如何添加鼠标点击事件? 1.通常我们只使用了以下代码,通过配置项和数据显示图表. var myChart = echarts.init(document.getElementById(' ...

  6. JavaScript与jQuery关于鼠标点击事件

    即实现鼠标点击其中一个菜单发生样式的改变,当点击下一个菜单时,当前菜单样式改变,其他菜单均变为之前样式. 用JavaScript,jQuery都可以实现,只是后者是封装的JavaScript库,具有s ...

  7. jQuery模拟鼠标点击事件失效的问题

    最近使用jQuery操作浏览器获取数据,需要对分页的信息进行处理,发现直接使用$('div#pager a.next').click();的这种写法无法触发点击事件. 使用trigger('click ...

  8. Listbox与dataGridView的获取鼠标点击事件的区别!!!

    lisxian.SelectedIndex = index; Listbox获取鼠标的代码!!!! DataGridViewRow currenRow = this.dgvxian3.Rows[ind ...

  9. JavaFX如何制作鼠标多击事件?

    JavaFX制作鼠标双击或者多击事件需要用到getClickCount()方法,这个方法需要添加addEventHandler()方法,addEventHandler()是事件方法. 1 scene. ...

随机推荐

  1. Matlab Tricks(二十八)—— 笛卡尔积的实现

    笛卡尔积在数学上是一种二元关系,笛卡尔积作用的双方是两个集合,作用的结果是一个新的集合. A×B={(a,b)|a∈Aandb∈B} 现有两向量: >> p = [1, 5, 10]; & ...

  2. Asp.net固定功能位充满了零(解决,演示样本)!

    Asp.net固定功能位充满了零(解决.演示样本)! 在发展,其中,数实现出现8数字.但是,需要使用0加厚.例如:123,代表:0000123. 真实的比例,如下: decimal aaa = 123 ...

  3. 简明Python3教程 1.翻译

    这里有许许多多本书不同语言的译本,感谢那些不知疲倦的志愿者们! 如果你想帮助这些译本,请参看下面的关于志愿者和语言的列表,然后决定是要开始一个新的翻译项目还是帮助改进现有的翻译项目. 如果你计划开始一 ...

  4. OpenGL(十六) 鼠标、键盘交互响应事件

    OpenGL中通过鼠标和键盘跟程序交互的实现需要实现注册鼠标和键盘响应事件,在一定条件下,该事件被触发,事件里的程序被执行,达到交互的目的. 通过glutMouseFunc(&OnMouse) ...

  5. Asp.net-MyFirstMVCProject详细解释

    一个URL要求, ASP.NET MVC引擎将分析URL要使用Controller, 这个Controller(取而代之的是,真实的方法Controller的Action)从数据库或者其它数据源获取数 ...

  6. Oracle 已有则更新,没有则插入

    使用merge merge into 表名 t1 using (select '数据数据' 字段1,'数据数据' 字段2 from dual) t2 on (t1.字段1 = t2.字段1) when ...

  7. WPF ValidationRule的特点(默认目标-源才校验)

    默认是当目标发生改变时候,通过绑定改变源时候进行校验,因为WPF认为源是安全的,如果想让源改变时候,也进行校验则设置验证规则的ValidatesOnTargetUpdated =true using ...

  8. HALCON 语句的分类

    绿色:注释 褐色:控制和开发算子 蓝色:图像获取和处理算子 浅蓝色:外部函数

  9. WPF读取和显示word

    引言 在项目开发中,word的读取和显示会经常出现在客户的需求中.特别是一些有关法律规章制度.通知.红头文件等,都是用word发布的. 在WPF中,对显示WORD没有特定的控件,这对开发显示WORD的 ...

  10. laravel 报错SQLSTATE[HY000] [2002] No such file or directory

    在mac中执行php artisan migrate时报错 SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from i ...