3D场景中的鼠标响应事件

简介: 原文:3D场景中的鼠标响应事件今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了。对于二维平面上的一些控件也很好处理,比如在跳棋那篇文章中,就是用了ellipse的鼠标左右键按下的事件响应函数。
原文: 3D场景中的鼠标响应事件

今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了。对于二维平面上的一些控件也很好处理,比如在跳棋那篇文章中,就是用了ellipse的鼠标左右键按下的事件响应函数。可是对于WPF中的三维空间怎么办呢?一般的网格没有提供鼠标事件啊?

现在来介绍一下WPF的3D中响应鼠标事件的处理。

1.      viewport3D是提供了鼠标响应事件(大家可以在响应的帮助文档中找到)。

2.      那问题来了,使用什么可以知道我的鼠标点了或在那个网格上呢?需要通过对Viewport3D 控件(容器)的hit测试,将二维命中测试点挤压成三维射线,将二维命中测试扩展到三维场景。其中是调用 HitTest方法来返回有关命中可视对象、模型、网格和交点的详细命中结果信息。具体的就要使用VisualTreeHelper.HitTest 方法,这个方法可以返回命中测试的最顶层 visual对象。这样你就可以对你测试过程得到的对象做出一些操作。

3.      Hittest有三个重构的方法,我们要使用的是
        public static void HitTest(

        Visual3D reference,

        HitTestFilterCallback filterCallback,

        HitTestResultCallback resultCallback,

        HitTestParameters3D hitTestParameters

        )

        关于这个函数的使用请看:

                   http://msdn.microsoft.com/zh-cn/library/ms608751.aspx

 

最后有个例子,可以参考:

http://msdn.microsoft.com/zh-cn/library/ms745195(v=VS.100).aspx

这是一个不完整的程序,但是你可以看到如实使用鼠标和hittest的方法来对选中的顶层visual对象进行处理。

如果需要完整的程序,可以到:

http://code.msdn.microsoft.com/wpfsamples/Wiki/View.aspx?title=zh-Hans

下载。需要找一下。

目录
相关文章
|
7月前
如何解决由引起的IQKeyboardManager部分页面返回的键盘高度比实际小或最后收到键盘隐藏通知却显示了键盘问题
如何解决由引起的IQKeyboardManager部分页面返回的键盘高度比实际小或最后收到键盘隐藏通知却显示了键盘问题
118 0
|
7月前
|
计算机视觉 Python
响应鼠标事件
【5月更文挑战第11天】响应鼠标事件。
43 0
|
7月前
[Qt5] 鼠标响应事件和计时器事件
[Qt5] 鼠标响应事件和计时器事件
64 0
|
7月前
页面监听键盘事件
页面监听键盘事件
|
监控 Java Android开发
响应系统设置的事件
Configuration类是用来描述手机设备的配置信息的,比如屏幕方向,触摸屏的触摸方式等,相信定制过ROM的朋友都应该知道我们可以在:frameworks/base/core/java/android/content/res/Configuration.java找到这个类,然后改下相关设置,比如调整默认字体的大小!
100 0
|
前端开发