首页 / 浏览问题 / 组件 / 问题详情
如何在三维场景中用鼠标获取点击位置的x,y,z值
zjl  (14分)  才疏学浅
11月29日, 2016

object.net如何在三维场景中用鼠标获取点击位置的x,y,z值,如同桌面中场景菜单下的查询坐标值功能;

1个回答

使用Scene.PixelToGlobe方法,可以将屏幕坐标转换为将屏幕点对象转换成三维点对象,屏幕坐标即是鼠标在屏幕上的位置,可以在mouse事件中获取。
周仕斌  (1,732分)  名扬四海
11月29日, 2016
这个获取x,y我知道是可以通过这个方式获取 但是屏幕坐标没有高度值的呀
获取高程请使用Scene.GetAltitude,使用这个的前提是场景中的这块位置加载的有高程数据
在桌面里面我上面截图的功能看,加载了倾斜摄影模型一样可以获取到倾斜摄影模型鼠标点的高度,所以我想知道截图上“查询坐标值”功能是怎么实现的。

倾斜摄影模型获取高度是这样的:void sceneControl_MouseMove(object sender, MouseEventArgs e)
        {
            Point3D point3D = sceneControl.Scene.PixelToGlobe(new Point(e.X, e.Y));
            Double Height = sceneControl.Scene.GetHeight(point3D.X, point3D.Y);
        }

那如果是dem的地形数据也可以通过这个方法

void sceneControl_MouseMove(object sender, MouseEventArgs e)
        {
            Point3D point3D = sceneControl.Scene.PixelToGlobe(new Point(e.X, e.Y));
            Double Height = sceneControl.Scene.GetHeight(point3D.X, point3D.Y);
        }

获取高度么?

获取DEM的数据高程建议使用Scene.GetAltitude,Scene.GetHeight是针对模型数据的

加载了OSGB缓存数据,Scene.GetHeight获取的高度跟桌面坐标查询出的Z值差别很大,怎么回事?不支持OSGB缓存?
...