zoukankan      html  css  js  c++  java
  • Arcscene二次开发部分开发C#

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    using ESRI.ArcGIS.Carto;

    using ESRI.ArcGIS.Controls;

    using ESRI.ArcGIS.SystemUI;

    using ESRI.ArcGIS.Output;

    using ESRI.ArcGIS.Display;

    using ESRI.ArcGIS.Geometry;

    using ESRI.ArcGIS.esriSystem;

    using ESRI.ArcGIS.Geodatabase;

    using ESRI.ArcGIS.Analyst3D;

    using ESRI.ArcGIS.Animation;

    using ESRI.ArcGIS.DataSourcesRaster;

    using stdole;

    using System.Text.RegularExpressions;

     

     

    namespace ESRI项目开发竞赛

    {

        public partial class FrcSence : Form

        {

            public FrcSence()

            {

                InitializeComponent();

            }

     

            #region //全局变量

            public Boolean scenePan = false;

            public int clickSceneTime = 0;

            public IPoint scenePanPoints1 = new PointClass();

            public IPoint scenePanPoints2 = new PointClass();

            public IPoint CameraObs = new PointClass();

            public IAnimationTrack Playtrl = new AnimationTrackClass();

            public Boolean CreaterKeyFrameSwitch = false;

            public int KeyIndex;

            //public  AxSceneControl paxSceneControl;

            public double startHeight;

            public double endHeight;

            public double nowHeight;

            //private ILegendClass pLegendClass;

            //private ILayer pLayer;

            public ISymbol pSymbol;

            public Image pSymbolImage;

            //private bool p;

            private ILayer TOCRightLayer;

            public ISceneControl mSceneControl;

            //FrmIdentify pFrmIdentify = new FrmIdentify();

            public Boolean pIdnetifyIsOrNot;

            //public IScene pScene;

            #endregion

     

            #region //菜单功能

            /// <summary>

            /// 打开Raster文件

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void 打开Raster文件ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                try

                {

                    openFileDialog1 = new OpenFileDialog();

                    openFileDialog1.Title = "添加raster数据";

                    openFileDialog1.Filter = "TIFF格式(*.tif)|*.tif|Img格式(*.img)|*.img|Bmp格式(*.bmp)|*.bmp|Jpeg格式(*.jpg)|*.jpg";

                    openFileDialog1.ShowDialog();

     

                    string sFilePath = openFileDialog1.FileName;

                    IRasterLayer pRaster;

                    pRaster = new RasterLayerClass();

                    pRaster.CreateFromFilePath(sFilePath);

                    axSceneControl1.Scene.AddLayer(pRaster, true);

     

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.ToString());

                }

            }

     

            /// <summary>

            /// 打开Feature文件

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void 打开Feature文件ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                try

                {

                    OpenFileDialog pOpenfile = new OpenFileDialog();

                    pOpenfile.Title = "添加shapefile文件";

                    pOpenfile.Filter = "*(.shp)|*.shp";

                    pOpenfile.ShowDialog();

     

                    ILayerFactoryHelper pLayerFactoryHelper = new LayerFactoryHelperClass();

                    IFileName filename = new FileNameClass();

                    filename.Path = pOpenfile.FileName;

                    IEnumLayer enumlayer = pLayerFactoryHelper.CreateLayersFromName(filename as IName);

                    ILayer layer;

                    enumlayer.Reset();

                    layer = enumlayer.Next();

                    while (layer != null)

                    {

                        axSceneControl1.SceneGraph.Scene.AddLayer(layer, false);

                        layer = enumlayer.Next();

                        axSceneControl1.SceneGraph.RefreshViewers();

                    }

                }

                catch

                {

                    return;

                }

            }

     

            /// <summary>

            /// 打开TIN文件

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void 打开TIN文件ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                //string dirName;

                //ILayer pLayer;

                //FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();

                //if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

                //{

     

                //    dirName = folderBrowserDialog1.SelectedPath;

     

                //    pLayer = AddData.openTinLayer(dirName);

     

                //    if (pLayer != null)

                //    {

                //        //axMapControl1.AddLayer(pLayer, 0);

                //        axSceneControl1.Scene.AddLayer(pLayer, 0);

     

                //    }

     

                //}

     

     

                try

                {

                     FolderBrowserDialog  openFileDialog1 = new FolderBrowserDialog();

                    //openFileDialog1.Title = "添加TIN数据";

                    //openFileDialog1.Filter = "TIFF格式(*.tif)|*.tif|Img格式(*.img)|*.img|Bmp格式(*.bmp)|*.bmp|Jpeg格式(*.jpg)|*.jpg";

                    openFileDialog1.ShowDialog();

     

                    string sFilePath;

                    sFilePath = openFileDialog1.SelectedPath;

                   

                    ITin pTIN = new Tin3DPropertiesClass() as ITin ;

                    ITinLayer pTINLyr = new TinLayerClass();

                    pTINLyr.Dataset = pTIN;

                    //pTINLyr.

                    axSceneControl1.Scene.AddLayer(pTINLyr);

                    axSceneControl1.Refresh();

     

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.ToString());

                }

     

                //ITin pTIN = new pTIN();

                //ITinLayer pTINLyr = new TinLayerClass();

                //pTINLyr.Dataset = pTIN;

                //axSceneControl1.Scene.AddLayer(pTINLyr);

     

            }

     

            /// <summary>

            /// 保存场景图片

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void 保存场景图片ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                try

                {

                    string sFileName;

                    SaveFileDialog pSaveFile = new SaveFileDialog();

                    pSaveFile.Title = "保存图片";

                    pSaveFile.Filter = "BMP图片(*.bmp)|*.bmp|JPEG图片(*.jpg)|*.jpg|TIF图片(*.tif)|*.tif";

                    pSaveFile.ShowDialog();

     

                    sFileName = pSaveFile.FileName;

                    if (pSaveFile.FilterIndex == 1)

                    {

                        axSceneControl1.SceneViewer.GetScreenShot(esri3DOutputImageType.BMP, sFileName);

                    }

                    else

                        if (pSaveFile.FilterIndex == 2)

                        {

                            axSceneControl1.SceneViewer.GetScreenShot(esri3DOutputImageType.JPEG, sFileName);

                        }

                    MessageBox.Show("成功保存图片至:" + sFileName);

                }

                catch

                {

                    MessageBox.Show("出现错误返回");

                }

            }

     

            /// <summary>

            /// 退出

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

            {

     

            }

            #endregion

     

            #region //基本操作

            //放大

            private void button1_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Zoom(0.9);

                axSceneControl1.Refresh();

            }

     

            //缩小

            private void button2_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Zoom(1.1);

                axSceneControl1.Refresh();

            }

     

            //漫游

            private void button3_Click(object sender, EventArgs e)

            {

                axSceneControl1.Navigate = true;

            }

     

            //平移

            private void button4_Click(object sender, EventArgs e)

            {

                scenePan = true;

            }

     

            //窗体事件

            private void axSceneControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ISceneControlEvents_OnMouseDownEvent e)

            {

                //鼠标漫游

                if (scenePan)

                {

                    //if (CreaterKeyFrameSwitch)

                    //{

                    //    CreateKeyFrame(axSceneControl1.Scene, Playtrl, KeyIndex);

     

                    //    KeyIndex = KeyIndex + 1;

                    //}

     

                    if (clickSceneTime == 0)

                    {

                        scenePanPoints1.PutCoords(e.x, e.y);

                        clickSceneTime = 1;

                    }

     

                    else if (clickSceneTime == 1)

                    {

                        scenePanPoints2.PutCoords(e.x, e.y);

                        axSceneControl1.Camera.Pan(scenePanPoints1, scenePanPoints2);

                        axSceneControl1.Refresh();

                        clickSceneTime = 0;

                        scenePan = false;

                    }           

                }

                //鼠标点击查询

                if (pIdnetifyIsOrNot == true)

                {

                    IHit3DSet pHit3DSet;

                    axSceneControl1.SceneGraph.LocateMultiple(axSceneControl1.SceneGraph.ActiveViewer, e.x, e.y, esriScenePickMode.esriScenePickAll, false, out pHit3DSet);

                    pHit3DSet.OnePerLayer();

                    if (pHit3DSet.Hits.Count == 0)

                    {

                        MessageBox.Show("当前点未能查找到任何要素");

                    }

                    IHit3D pHit3D = pHit3DSet.Hits.get_Element(0) as IHit3D;

                    pIdnetifyIsOrNot = false;

                    MessageBox.Show("X =" + pHit3D.Point.X + ",Y=" + pHit3D.Point.Y + ", Z =" + pHit3D.Point.Z);

                }

     

                if (e.button == 2)

                {

                    contextMenuSence.Show(this.axSceneControl1, e.x, e.y);

                }

            }

     

            //自动旋转

            private void checkBox1_CheckedChanged(object sender, EventArgs e)

            {

                if (checkBox1.Checked)

                {

                    timer1.Enabled = true;

                }

                else

                {

                    timer1.Enabled = false;

                }

            }

     

            //自动旋转的速率控制

            private void timer1_Tick(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Rotate( Convert.ToDouble(comboBox2.Text));

                axSceneControl1.Refresh();

            }

     

            #endregion

     

            #region //方向控制

            //上移

            private void button9_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Move(esriCameraMovementType.esriCameraMoveUp, 0.01);

                axSceneControl1.Refresh();

            }

     

            //左移

            private void button10_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Move(esriCameraMovementType.esriCameraMoveLeft, 0.01);

                axSceneControl1.Refresh();

            }

     

            //右移

            private void button12_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Move(esriCameraMovementType.esriCameraMoveRight, 0.01);

                axSceneControl1.Refresh();

            }

     

            //下移

            private void button11_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Move(esriCameraMovementType.esriCameraMoveDown, 0.01);

                axSceneControl1.Refresh();

            }

     

            //前进

            private void button13_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Move(esriCameraMovementType.esriCameraMoveAway, 0.01);

                axSceneControl1.Refresh();

            }

     

            //后退

            private void button14_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Move(esriCameraMovementType.esriCameraMoveToward, 0.01);

                axSceneControl1.Refresh();

            }

     

            //点击查询    

            //public Boolean pIdnetifyIsOrNot;

            private void button15_Click(object sender, EventArgs e)

            {

                pIdnetifyIsOrNot = true;

            }

     

            #endregion

     

            #region //视屏输出

            //保存视频文件

            private void button16_Click(object sender, EventArgs e)

            {

                try

                {

     

                    SaveFileDialog saveVedioFile = new SaveFileDialog();

                    saveVedioFile.Filter = "视屏文件(*.avi)|*.avi";

                    saveVedioFile.Title = "输出AVI文件";

                    saveVedioFile.ShowDialog();

     

                    ISceneExporter3d p3Dexporter = new AVIExporterClass();

                    p3Dexporter.ExportFileName = saveVedioFile.FileName;

     

                    ISceneVideoExporter pExporter;

                    pExporter = p3Dexporter as ISceneVideoExporter;

                    pExporter.Viewer = axSceneControl1.Scene.SceneGraph.ActiveViewer;

     

                    pExporter.VideoDuration =100 * Convert.ToDouble(comboBox6.Text);

                    pExporter.FrameRate = 10 * trackBar1.Value;

                    IAVIExporter pAVIExporter;

                    pAVIExporter = p3Dexporter as IAVIExporter;

                    pAVIExporter.Quality = 50 * trackBar2.Value;

     

                    p3Dexporter.ExportScene(axSceneControl1.Scene);

                    MessageBox.Show("输出AVI视屏完成");

                }

                catch

                {

                    return;

                }

            }

     

            #endregion

     

            #region //TOC右键功能

     

            private void axTOCControl1_OnMouseDown(object sender,ITOCControlEvents_OnMouseDownEvent e)

            {

                esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;

                IBasicMap map = null; ILayer layer = null;

                object other = null; object index = null;

                axTOCControl1.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);

                axSceneControl1.CustomProperty = layer;

                if (e.button == 2)

                {

                    switch (item)

                    {

                        case esriTOCControlItem.esriTOCControlItemLayer:

                            this.TOCRightLayer = layer;

                            //this.contextMenuFeaturLayer.Show(this.axTOCControl1, e.x, e.y);

                            contextMenuSencelayers.Show(this.axTOCControl1, e.x, e.y);

                           

     

                            break;

                    }

                }

            }

     

            //全屏显示

            private void 全屏ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                //axSceneControl1.Scene.Extent = axSceneControl1.Scene.get_Layer(0);

            }

           

            //右键删除

            private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                this.axSceneControl1.Scene.DeleteLayer(this.TOCRightLayer);

                this.axSceneControl1.Refresh();

            }

     

            #endregion

     

            #region //功能实现

           

            //拉伸显示

            private void button8_Click(object sender, EventArgs e)

            {

                try

                {

                    ISceneGraph scenegraph = axSceneControl1.SceneGraph;

                    IScene scene = scenegraph.Scene;

                    ILayer layer = scene.get_Layer(0);

                    IRasterLayer pLayer = layer as IRasterLayer;

                    IRasterSurface pSurface = new RasterSurface();

                    IRaster raster = (IRaster)pLayer.Raster;

                    IRasterBandCollection rasterbands = raster as IRasterBandCollection;

                    IRasterBand rasterband = rasterbands.Item(0);

                    pSurface.RasterBand = rasterband;

                    ISurface surface = pSurface as ISurface;

                    ILayerExtensions layerextensions = layer as ILayerExtensions;

                    I3DProperties properties = new Raster3DPropertiesClass();

                    object p3d;

                    for (int i = 0; i < layerextensions.ExtensionCount; i++)

                    {

                        p3d = layerextensions.get_Extension(i);

                        if (p3d != null)

                        {

                            properties = (I3DProperties)p3d;

                            break;

                        }

                    }

                    properties.ZFactor = Convert.ToDouble(comboBox7.Text);

                    properties.BaseOption = esriBaseOption.esriBaseSurface;

                    properties.BaseSurface = surface;         

                    properties.Apply3DProperties(layer);      

                    axSceneControl1.SceneGraph.RefreshViewers();

                }

                catch

                {

                    return;

                }

            }

     

            //地形渲染

            private void button7_Click(object sender, EventArgs e)

            {

                try

                {

                    IScene scene = axSceneControl1.Scene;

                    ILayer layer = scene.get_Layer(0);

                    IRasterLayer pRasterLayer = layer as IRasterLayer;     

                    IRaster raster = (IRaster)pRasterLayer.Raster;

                    IRasterBandCollection rasterbands = raster as IRasterBandCollection;

                    IRasterBand rasterband = rasterbands.Item(0);           

                    IRasterStretchColorRampRenderer pRStretchRender = new RasterStretchColorRampRendererClass();

                    //创建两个起始颜色

                    IRgbColor pFromRgbColor = new RgbColorClass();

                    pFromRgbColor.Red = 40;

                    pFromRgbColor.Green = 30;

                    pFromRgbColor.Blue = 250;

                    IRgbColor pToRgbColor = new RgbColorClass();

                    pToRgbColor.Red = 240;

                    pToRgbColor.Green = 80;

                    pToRgbColor.Blue = 40;

     

                    //创建起止颜色带

                    IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();

                    pAlgorithmicColorRamp.Size = 255;

                    pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor;

                    pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor;

                    bool btrue = true;

                    pAlgorithmicColorRamp.CreateRamp(out btrue);

                    //选择拉伸颜色带符号化的波段

                    pRStretchRender.BandIndex = 1;

                    //pRStretchRender.BandIndex = pRasterLayer.BandCount;

                    //设置拉伸颜色带符号化所采用的颜色带

                    pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp;

                    IRasterRenderer pRasterRender = pRStretchRender as IRasterRenderer;

                    pRasterLayer = scene.get_Layer(0) as IRasterLayer;

                    pRasterRender.Raster = pRasterLayer as IRaster;

                    pRasterRender.Update();

                    //符号化RasterLayer

                    pRasterLayer.Renderer = pRasterRender;

                    //渲染的刷新

                    axSceneControl1.Scene.SceneGraph.Invalidate(pRasterLayer, true, false);

                    axSceneControl1.SceneViewer.Redraw(true);

                    axSceneControl1.Scene.SceneGraph.RefreshViewers();

                    axTOCControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, pRasterLayer, axSceneControl1.Scene.Extent);

                    axTOCControl1.Update();

                }

                catch (Exception Err)

                {

                    MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

     

                }

            }

     

            //水面渲染

            private void button6_Click(object sender, EventArgs e)

            {

                try

                {

     

                    ISceneGraph scenegraph = axSceneControl1.SceneGraph;

                    IScene scene = scenegraph.Scene;

                    ILayer layer = scene.get_Layer(1);

                    IRasterLayer pRasterLayer = layer as IRasterLayer;

                    IRaster raster = (IRaster)pRasterLayer.Raster;

                    IRasterBandCollection rasterbands = raster as IRasterBandCollection;

                    IRasterBand rasterband = rasterbands.Item(1);

                    IRasterStretchColorRampRenderer pRStretchRender = new RasterStretchColorRampRendererClass();

                    IRasterRenderer pRasterRender = pRStretchRender as IRasterRenderer;         

                    pRasterLayer = scene.get_Layer(1) as IRasterLayer;     

                    pRasterRender.Raster = pRasterLayer as IRaster;

                    pRasterRender.Update();

     

                    //创建两个起始颜色

                    IRgbColor pFromRgbColor = new RgbColorClass();

                    pFromRgbColor.Red = 80;

                    pFromRgbColor.Green = 80;

                    pFromRgbColor.Blue = 255;

                    IRgbColor pToRgbColor = new RgbColorClass();

                    pFromRgbColor.Red = 80;

                    pFromRgbColor.Green = 80;

                    pFromRgbColor.Blue = 255;

     

                    //创建起止颜色带

                    IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();

                    pAlgorithmicColorRamp.Size = 255;

                    pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor;

                    pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor;

                    bool btrue = true;

                    pAlgorithmicColorRamp.CreateRamp(out btrue);

                  

                    //选择拉伸颜色带符号化的波段

                    pRStretchRender.BandIndex = 1;

         

                    //设置拉伸颜色带符号化所采用的颜色带

                    pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp;

                    pRasterRender.Update();

                    //符号化RasterLayer

                    pRasterLayer.Renderer = pRasterRender;

                    axSceneControl1.SceneGraph.RefreshViewers();

                            

                    //渲染的刷新

                    axSceneControl1.Scene.SceneGraph.Invalidate(pRasterLayer, true, false);

                    axSceneControl1.SceneViewer.Redraw(true);

                    axSceneControl1.Scene.SceneGraph.RefreshViewers();

                    axTOCControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, pRasterLayer, axSceneControl1.Scene.Extent);

                    axTOCControl1.Update();

     

                }

                catch (Exception Err)

                {

                    MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

     

                }

            }

     

            //淹没演示

            private void button5_Click(object sender, EventArgs e)

            {

                try

                {

                    IRasterLayer pRasterLayer = new RasterLayerClass();

                    pRasterLayer = axSceneControl1.Scene.get_Layer(1) as IRasterLayer;

                    IRaster pRaster = pRasterLayer.Raster;

     

                    IRasterLayer mRasterLayer = new RasterLayerClass();

                    mRasterLayer = axSceneControl1.Scene.get_Layer(0) as IRasterLayer;

                    IRaster mRaster = mRasterLayer.Raster;         

                   

                    double P = RasterStatistics(mRaster);

                    startHeight = P;

               

                    nowHeight = startHeight;

                    bool y = Regex.IsMatch(comboBox5.Text,@"[0-9]*[1-9][0-9]*$");

                    if (y)

                    {

                        endHeight = Convert.ToDouble(comboBox5.Text) + P;

                     

                        timer2.Enabled = true;

                        

                        P = nowHeight;

                        axSceneControl1.SceneGraph.RefreshViewers();

                    }

                    else

                    {

                        MessageBox.Show("请正确输入!");

                    }

     

                }

                catch

                {

                    return;

                }

            }

     

            //取栅格的最小值

            public double RasterStatistics(IRaster pInRaster)

            {

     

                IRasterBandCollection pRasterBands = pInRaster as IRasterBandCollection;

                IRasterBand pRasterBand = null;

                double dZMin = 0;

                if (pRasterBands.Count > 0)

                {

                    pRasterBand = pRasterBands.Item(0);

                    IRasterStatistics pRasterStat = pRasterBand.Statistics;

                    //double dZMax = pRasterStat.Maximum;

                    dZMin = pRasterStat.Minimum;

                    //lblZMax.Text = dZMax.ToString();

                    return dZMin;

                }

                return dZMin;

            }

     

            //水淹时间控制

            private void timer2_Tick(object sender, EventArgs e)

            {

                try

                {

                    IRasterLayer pRasterLayer = axSceneControl1.Scene.get_Layer(1) as IRasterLayer;

                    I3DProperties pI3DProperties = new Raster3DPropertiesClass();

                    ILayerExtensions p = pRasterLayer as ILayerExtensions;

                    object pp;

                    int i;

                    //timer2.Enabled =true;

                    for (i = 0; i <= p.ExtensionCount - 1; i++)

                    {

                        pp = p.get_Extension(i);

                        if (pp != null)

                        {

                            pI3DProperties = p.get_Extension(i) as I3DProperties;

                        }

                        axSceneControl1.Refresh();

                    }

     

                    pI3DProperties.BaseOption = esriBaseOption.esriBaseExpression;

                    nowHeight = nowHeight + 1;

                    startHeight = nowHeight;

                    pI3DProperties.BaseExpressionString = nowHeight.ToString();

                    //pI3DProperties.MaxRasterColumns = nowHeight.ToString();

                    pI3DProperties.Apply3DProperties(pRasterLayer);

                    axSceneControl1.SceneGraph.RefreshViewers();

                    if (nowHeight >= endHeight)

                    {

                        timer2.Enabled = false;

                        //p =bool(false );

                        //axSceneControl1.SceneGraph.RefreshViewers();

                    }

                }

                catch

                {

                    return;

                }

            }

     

            #endregion

     

            #region // Scene 右键功能

     

            private void 全屏ToolStripMenuItem1_Click(object sender, EventArgs e)

            {

                //axSceneControl1.Camera = axSceneControl1.Scene.SceneGraph.Extent as ICamera ;

            }

     

            private void 漫游ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                axSceneControl1.Navigate = true;

            }

     

            private void 放大ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Zoom(0.5);

                axSceneControl1.Refresh();

                //ControlsSceneZoomInTool ScenePan = new ControlsSceneZoomInTool();

                //ScenePan.OnCreate(axSceneControl1.Object);

                //axSceneControl1.CurrentTool = ScenePan as ITool;

            }

     

            private void 缩小ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Zoom(2.0);

                axSceneControl1.Refresh();

                //ControlsSceneZoomOutTool SP = new ControlsSceneZoomOutTool();

                //SP.OnCreate(axSceneControl1.Object);

                //axSceneControl1.CurrentTool = SP as ITool;

            }

     

            private void 属性ToolStripMenuItem1_Click(object sender, EventArgs e)

            {

                pIdnetifyIsOrNot = true;

            }

     

            private void 旋转ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                axSceneControl1.Camera.Rotate(0);

            }

     

            private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                axSceneControl1.SceneGraph.RefreshViewers();

            }

            #endregion

  • 相关阅读:
    js——获取指定日期的前7天连续日期
    一个div自动充满当前屏幕的解决方法
    Cookie和Session
    Web服务器和浏览器间的工作原理
    软件测试基础概念
    K短路的几种求法
    ID字体
    搭建GitLab的Hexo博客记录
    项目selfcmp开发学习
    牛顿迭代法学习笔记
  • 原文地址:https://www.cnblogs.com/cuiguanghe/p/2980691.html
Copyright © 2011-2022 走看看