当前位置:文档之家› 二三维联动之MapControl与SceneControl的联动

二三维联动之MapControl与SceneControl的联动


15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. }
// 三维 // 获得现场的相机 ICamera pCamera = this.axSceneControl1.Camera as ICamera; // 拓宽视野 double dAngle; dAngle = pCamera.ViewFieldAngle; pCamera.ViewFieldAngle = dAngle * 0.9; // 重绘现场 ISceneViewer pSceneViewer = this.axSceneControl1.SceneGraph.ActiveViewe r as ISceneViewer; pSceneViewer.Redraw( false );
多的话说了没用,看代码如下:
1on 同步到 SceneControl 中
C#代码 1. // 加载 shp 文件到 MapControl 中 2. private void btnItem9_1_SHP_Click( object sender, EventArgs e) 3. { 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. me); 18. nsion(fname); 19. 20. e); 21. 22. 23. 24. 25. IActiveView pActiveView = (IActiveView)axMapControl1.Map; } } } axMapControl1.AddShapeFile(pathToWorkspace, shapefileNam string shapefileName = System.IO.Path.GetFileNameWithoutExte if (openFileDialog1.ShowDialog() == DialogResult.OK) { foreach ( string fname in openFileDialog1.FileNames) { if (fname != null ) { string pathToWorkspace = System.IO.Path.GetDirectoryName(fna OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.CheckFileExists = true ; openFileDialog1.CheckFileExists = true ; openFileDialog1.Multiselect = true; openFileDialog1.Filter = "shape files(*.shp)|*.shp"; openFileDialog1.Title = " 请选择 shp 格式文件";
2.点击一个 button,让二维和三维一起放大,即同步放大
C#代码 1. // 同步放大 2. private void btnItem9_5_ZoomInFixed_Click( object sender, EventArgs e) 3. { 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. // 刷新 pEnvelope.Expand(0.9, 0.9, true ); pActiveView.Extent = pEnvelope; pActiveView.Refresh(); // 获得显示范围 IEnvelope pEnvelope = (IEnvelope)pActiveView.Extent; // 得到接口 IActiveView pActiveView = this .axMapControl1.Map as IActiveView;
26. 27. }
pActiveView.Refresh();
OK,接下来是同步的方法:
C#代码 1. // 重新同步 MapControl 中的所有图层到 SceneControl 2. 3. 4. 5. 6. 7. 8. 9. 10. 层 11. axSceneControl1.Scene.AddLayers(axMapControl1.Map.get_Layers(ui d, true ), true ); 12. 13. 14. 15. 16. } } axSceneControl1.SceneGraph.RefreshViewers(); } private void synLayersToSceneControl() { if (axMapControl1.ActiveView != null) { if (yerCount > 0) { axSceneControl1.Scene.ClearLayers(); UID uid = new UIDClass(); uid.Value = "{6CA416B1-E160-11D2-9F4E-00C04F6BC78E}"; // 所有图
针对 ArcEngine 项目需要,开始由 JAVA 转向 搜索出来china 论坛,提问比回答的人多。就一个二三维联动,不知道有多 少贴子,VB 的,C++的,C#的很少。没有一个好的贴子能直接解决我的问题,郁闷之极, 最主要是那个论坛分权限,刚注册的用户想看牛人的博客还进不去,我是 ArcEngine+C# 的 新手,我的项目很急,但是面对这样的论坛我很悲一样的新手学习学习。
相关主题