下载此文档

WorldWind系列十二:Measure插件学习.doc


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
WorldWind系列十二:Measure插件学****上)来源:博客园  作者:无痕客我在写自己的WorldWind插件时,遇到很大挫折,上周六本来想写个简单的画线的插件,费了九牛二虎之力终于画出了,如何以动画效果画出线的问题没解决。Direct3D中画线本来是个简单的事,画到球面上也不难,但是实践告诉我:我前期学****WW,又犯了眼高手低的毛病!改动人家写好的插件代码容易,但要把插件的整个流程都自己写,就没想象的简单啦,写代码不严谨的小问题就不说了,我周六画线的主要问题是Direct3D编程都浮在表面,连PrimitiveType中各类型的基元数和顶点的关系没搞清楚。(如想了解请参看:红色部分) 自己在画线上体验,让我决定先学****Measure插件。另外,我一直想做个类似VE插件,支持加载ArcGIS切图方式的影像,自己想了很久,有几个主要困惑没解决:投影方式不同如何处理、只要部分影像(如何计算行列数)、切图的中心问题(VE影像是全球的,切图中心经纬度为(0°,0°))等等。所以,前段WW实践,让我很受打击,博客就没心情更新啦!虽然理论和实践还有很大的距离,但是总结还是很重要的! 上面都是题外话了,开始说说Measure插件吧!总体感觉Measure插件很强大,如果能搞清楚,在球面上画点、线、面都不是难事啦。(前提:要有点DirectX编程基础) :MeasureTool(插件类)和MeasureToolLayer(渲染对象类)。MeasureToolLayer类中又包含五个内部类:MeasureLine、MeasureMultiLine、MeasurePropertiesDialog、MeasureState、SaveMultiLine(如下图) MeasureTool作为插件类,需要实现Load()和Unload()方法,不详说。Load()中注册了一些事件。加载代码    public override void Load()         { //构造渲染对象            layer = new MeasureToolLayer(                this,                 ); //设置纹理路径             = (PluginDirectory,"Plugins\\Measure");            (layer);            menuItem = new MenuItem("Measure\tM");             += new EventHandler(menuItemClicked);            ( menuItem );            // Subscribe events注册了事件             += new MouseEventHandler();             += new MouseEventHandler();             += new MouseEventHandler();             +=new KeyEventHandler();        }  MeasureToolLayer作为渲染对象类,是WW插件实现的重点。必须重载的方法Initialize()、Update()、Render()和PerformSelectionAction(DrawArgsdrawArgs)。我们先分别看看MeasureToolLayer的五个内部类。   publicenumMeasureState   {    Idle,    Measuring,    Complete   } MeasureState是个枚举类型,存放Measure的当前状态的(空闲、测量中、完成)。   从上图中,我们可看到MeasurePropertiesDialog和SaveMultiLine类。 MeasurePropertiesDialog继承自Form,主要是设置画线的类型:单线、多条线。设置MeasureMode代码            private void okButton_Click(object sender, EventArgs e)            {                if ( == true)                      = ;                else                      = ;                ();            }  SaveMultiLine类基础自Form。主要实现将画出的多线,保存为KML或Shp格式。保存代码private void saveButton_

WorldWind系列十二:Measure插件学习 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息