- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WorldWind学习系列十:DCrossSection插件功能分析TerrainViewer
WorldWind学习系列十六:3D Cross Section插件功能分析——TerrainViewer
来源:博客园 ?? 作者:无痕客???? 3D Cross Section插件主要是提取WW中当前视图的地形数据和影像数据,然后在新的窗口TerrainViewer中显示。也就是提取一部分三维在新的窗体里重点显示。功能就简单一说,3D Cross Section插件中实现提取WW数据的插件部分我们下次再说,我这次主要是关注TerrainViewer的实现。
???????????????????
???? TerrainViewer的功能可以单独使用,正如其名字就是一个简单的三维地形数据的浏览器,简直是Mini型的WW。但它里面内容很丰富,有很多知识点值得我们学习借鉴:一方面是C#知识;一方面是Direct3D方面知识;还有就是其中涉及数据算法方面的处理。
????? 首先,说一下其中的C#拖拽文件到窗体打开功能的实现,看过很多软件特别是视频播放器软件,只要将视频文件拖到上面就能播放该视频;看过Office软件普遍支持拖放打开相应的文件;看过只要将文件拖入回收站就能自己删除等等。这些拖拽方法是如何在C#实现的?自己搞编程很久了,没遇到过这样的需求,也没见过这样代码实现案例,所以自己也就没深入研究这方面的知识。在研究TerrainViewer功能时,看到支持拖拽功能,就首先学习了一下它是如何实现的。自己以后的程序支持类似的拖放打开文件功能多酷?!分析一下该功能代码,与大家分享一下。
????????????//?Drag?drop????????????this.AllowDrop?=?true;?//允许窗口拖放
????????????//注册拖放开始事件????????????this.DragEnter?+=?new?DragEventHandler(this.OnDragEnter);
????????????//注册拖放处理事件????????????this.DragDrop?+=?new?DragEventHandler(this.OnDragDrop);
?看看this.OnDragEnter和this.OnDragDrop事件处理中都分别做了什么。
????????//?File?drop?handling????????private??void??OnDragEnter(object?sender,?System.Windows.Forms.DragEventArgs?e)????????{????????????e.Effect?=?DragDropEffects.Copy;??//?set?the?cursor?to?show?a?drop?copy????????}
上面的代码里主要是告诉,拖放的目的和效果是COPY。从下面的截图中,可以看到各种各种拖放效果。
??????
?从MSDN上截取的DragDropEffects说明:
????????????????
真正处理拖放文件的打开实现的代码:
private??void??OnDragDrop(object?sender,?System.Windows.Forms.DragEventArgs?e)????????{????????????string?theFile;????????????try????????????{????????????????//?check?to?make?sure?the?dropped?item?is?of?type?FileDrop????????????????if?(e.Data.GetDataPresent(DataFormats.FileDrop))????????????????{
????????????????????//获取拖放数据????????????????????object?filename?=?e.Data.GetData(DataFormats.FileDrop);
????????????????????//这里是数组,说明支持多选文件的同时拖放????????????????????theFile?=?(string)((System.Array)filename).GetValue(0);????????????????????//?Create?map?from?file????????????????????//?MessageBox.Show(Dropped?file?:??+?theFile);
????????????????????//获取拖放文件的后缀名????????????????????string?ext?
文档评论(0)