Пример #1
0
        /// <summary>
        /// 拾取线
        /// </summary>
        /// <param name="PickResult"></param>
        /// <param name="IntersectPoint"></param>
        /// <param name="Mask"></param>
        /// <param name="EventSender"></param>
        void g_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (IntersectPoint == null)
            {
                return;
            }

            if (renderPolyline == null)
            {
                renderPolyline        = axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, null, rootId);
                renderPolyline.Symbol = new CurveSymbol()
                {
                    Color = System.Drawing.Color.Red, Width = 4
                };
            }

            if (polyline.PointCount < 2)
            {
                polyline.AppendPoint(IntersectPoint);
            }
            if (polyline.PointCount == 2)
            {
                axRenderControl1.InteractMode          = gviInteractMode.gviInteractNormal;
                axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectNone;
                axRenderControl1.MouseSelectMode       = gviMouseSelectMode.gviMouseSelectClick;
                axRenderControl1.RcMouseClickSelect   -= new _IRenderControlEvents_RcMouseClickSelectEventHandler(g_RcMouseClickSelect);

                flagx = false;
            }
            renderPolyline.SetFdeGeometry(polyline);
        }
Пример #2
0
 /// <summary>
 /// 鼠标悬停事件
 /// </summary>
 /// <param name="PickResult"></param>
 /// <param name="IntersectPoint"></param>
 /// <param name="Mask"></param>
 /// <param name="EventSender"></param>
 void g_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
 {
     if (PickResult != null)
     {
         IFeatureLayerPickResult pr = PickResult as IFeatureLayerPickResult;
         string        featureId    = pr.FeatureId.ToString();
         IFeatureClass featureClass = null;
         IFeatureLayer fl           = pr.FeatureLayer;
         foreach (IFeatureClass fc in fcMap.Keys)
         {
             if (fc.Guid.ToString() == fl.FeatureClassId.ToString())
             {
                 featureClass = fc;
                 break;
             }
         }
         if (featureClass != null)
         {
             DataTable    dt           = CreateDataTable(featureClass);
             string       filterString = string.Format("oid={0}", featureId);
             IQueryFilter filter       = new QueryFilter();
             filter.WhereClause = filterString;
             GetResultSet(featureClass, filter, dt);
             showInfo(dt, IntersectPoint);
         }
     }
 }
Пример #3
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            //获取水源点
            waterPoint = IntersectPoint;
            //设置参数
            this.numWaterHStart.Value = (decimal)IntersectPoint.Z;
            this.numWaterHEnd.Value   = (decimal)(IntersectPoint.Z + 30);
            //获取缓冲区bufPolygon\renderBufPolygon
            radius = (double)numBufferRadius.Value;
            ITopologicalOperator2D to = waterPoint as ITopologicalOperator2D;

            bufPolygon = to.Buffer2D(radius, gviBufferStyle.gviBufferCapround) as IPolygon;
            ISurfaceSymbol sf = new SurfaceSymbol();

            sf.Color = System.Drawing.Color.Yellow;
            ICurveSymbol cs = new CurveSymbol();

            cs.Color                     = System.Drawing.Color.Yellow;
            sf.BoundarySymbol            = cs;
            renderBufPolygon             = this.axRenderControl1.ObjectManager.CreateRenderPolygon(bufPolygon, sf, rootId);
            renderBufPolygon.HeightStyle = gviHeightStyle.gviHeightOnTerrain;

            this.axRenderControl1.InteractMode        = gviInteractMode.gviInteractNormal;
            this.axRenderControl1.RcMouseClickSelect -= new _IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect);

            this.btnOnProcess.Enabled = true;
            this.btnSimulate.Enabled  = true;
        }
Пример #4
0
        void axRenderControl1_RcMouseDragSelect(IPickResultCollection PickResults, gviModKeyMask Mask)
        {
            IPickResultCollection prc = PickResults;

            if (prc == null && CTRL && Mask == gviModKeyMask.gviModKeyCtrl)
            {
                return;
            }

            if (!CTRL || (CTRL && Mask != gviModKeyMask.gviModKeyCtrl))  //ctrl键
            {
                this.axRenderControl1.FeatureManager.UnhighlightAll();
            }

            if (prc != null)
            {
                for (int i = 0; i < prc.Count; i++)
                {
                    IPickResult pr = prc.Get(i);
                    if (pr != null && pr.Type == gviObjectType.gviObjectFeatureLayer)
                    {
                        IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                        int           fid            = flpr.FeatureId;
                        IFeatureLayer fl             = flpr.FeatureLayer;
                        foreach (IFeatureClass fc in fcMap.Keys)
                        {
                            if (fc.Guid.Equals(fl.FeatureClassId))
                            {
                                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow);
                            }
                        }
                    }
                }
            }
        }
Пример #5
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            

            if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                this.axRenderControl1.FeatureManager.UnhighlightAll();
                IPickResult pr = PickResult;
                if (pr != null && pr.Type == gviObjectType.gviObjectFeatureLayer)
                {
                    IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                    curSelectFid = flpr.FeatureId;
                    IFeatureLayer fl = flpr.FeatureLayer;
                    foreach (IFeatureClass fc in fcMap.Keys)
                    {
                        if (fc.Guid.Equals(fl.FeatureClassId))
                        {
                            curSelectFc = fc;
                            break;
                        }
                    }     
                    this.axRenderControl1.FeatureManager.HighlightFeature(curSelectFc, curSelectFid, System.Drawing.Color.Red);
                    this.tsb_Delete.Enabled = true;
                    this.tsb_Update.Enabled = true;
                    this.tsb_Insert.Enabled = true;
                }
                else
                {
                    this.tsb_Delete.Enabled = false;
                    this.tsb_Update.Enabled = false;
                    this.tsb_Insert.Enabled = false;
                }
            }
        }
Пример #6
0
        private bool _3DControl_RcMouseMove(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseMoveEvent e)
        {
            IPoint      pt;
            IPickResult prTemp = this._3DControl.Camera.ScreenToWorld(e.x, e.y, out pt);

            if (pt != null)
            {
                if (_rPoint != null)
                {
                    this._objectManager.DeleteObject(_rPoint.Guid);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(_rPoint);
                    _rPoint = null;
                }
                _rPoint = this._objectManager.CreateRenderPoint(pt, this._simplePointSymbol, this._rootID);
            }
            if (prTemp != null && prTemp.Type == gviObjectType.gviObjectFeatureLayer)
            {
                if (this._hoverFL != null && this._hoverFL != this._curSelectedFL && this._curSelectedID != this._hoverID)
                {
                    this._hoverFL.UnhighlightFeature(this._hoverID);
                }

                IFeatureLayerPickResult pr = prTemp as IFeatureLayerPickResult;
                pr.FeatureLayer.HighlightFeature(pr.FeatureId, this._hightlightColor);
                this._hoverFL = pr.FeatureLayer;
                this._hoverID = pr.FeatureId;
            }
            return(false);
        }
Пример #7
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            IPickResult pr = PickResult;

            if (pr == null && CTRL && Mask == gviModKeyMask.gviModKeyCtrl)
            {
                return;
            }

            if (!CTRL || (CTRL && Mask != gviModKeyMask.gviModKeyCtrl))   //ctrl键
            {
                this.axRenderControl1.FeatureManager.UnhighlightAll();
            }

            if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                if (PickResult != null)
                {
                    if (pr.Type == gviObjectType.gviObjectFeatureLayer)
                    {
                        IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                        int           fid            = flpr.FeatureId;
                        IFeatureLayer fl             = flpr.FeatureLayer;
                        foreach (IFeatureClass fc in fcMap.Keys)
                        {
                            if (fc.Guid.Equals(fl.FeatureClassId))
                            {
                                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow);
                            }
                        }
                    }
                }
            }
        }
Пример #8
0
        private void AxRenderControl_RcMouseDragSelect(IPickResultCollection PickResults, gviModKeyMask Mask)
        {
            if (PickResults != null)
            {
                int         i = 0;
                IPickResult t = null;
                while ((t = PickResults.Get(i)) != null)
                {
                    if (t.Type == gviObjectType.gviObjectRenderPoint)
                    {
                        IRenderPoint temp = ((IRenderPointPickResult)t).Point;
                    }

                    if (t.Type == gviObjectType.gviObject3DTileLayer)
                    {
                        I3DTileLayer temp = ((I3DTileLayerPickResult)t).TileLayer;
                    }

                    if (t.Type == gviObjectType.gviObjectRenderModelPoint)
                    {
                        IRenderModelPoint temp = ((IRenderModelPointPickResult)t).ModelPoint;
                    }
                }
            }
        }
Пример #9
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                this.axRenderControl1.FeatureManager.UnhighlightAll();
                IPickResult pr = PickResult;
                if (pr == null)
                {
                    this.btn_AttachmentManager.Enabled = false;
                    return;
                }
                else if (pr.Type == gviObjectType.gviObjectFeatureLayer)
                {
                    IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                    curSelectFid = flpr.FeatureId;
                    IFeatureLayer fl = flpr.FeatureLayer;

                    curSelectFc = fcuidMap[fl.FeatureClassId] as IFeatureClass;
                    this.btn_AttachmentManager.Enabled = true;
                    this.axRenderControl1.FeatureManager.HighlightFeature(curSelectFc, curSelectFid, System.Drawing.Color.Red);
                }
                else
                {
                    this.btn_AttachmentManager.Enabled = false;
                    return;
                }
            }
        }
Пример #10
0
        void axRenderControl1_RcMouseClickSelect3(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (IntersectPoint == null)
            {
                return;
            }

            if (EventSender.Equals(gviMouseSelectMode.gviMouseSelectClick))
            {
                this.axRenderControl1.InteractMode        = gviInteractMode.gviInteractNormal;
                this.axRenderControl1.RcMouseClickSelect -= new Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect3);


                IViewshedPickResult pr = PickResult as IViewshedPickResult;
                if (pr == null)
                {
                    return;
                }

                IViewshed v = pr.Viewshed;
                if (v == null)
                {
                    return;
                }
                v.Highlight(System.Drawing.Color.Red);
            }
        }
Пример #11
0
        private void FeatureLayerPick(IPickResult pickResult, IPoint position, i3dMouseSelectMode selectedModel)
        {
            UnhighlightFeature(pickResult);

            if (selectedModel == i3dMouseSelectMode.i3dMouseSelectClick)
            {
                FeaturePickOrCreate(pickResult, position);
            }
        }
Пример #12
0
        void axRenderControl1_RcMouseClickSelect_CreateFeature(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            _geoEditor.FinishEdit();   //用于当拾取到基准面时,或者没有正常右键结束连续调用Start时
            this.axRenderControl1.FeatureManager.UnhighlightAll();

            if (PickResult != null)
            {
                switch (PickResult.Type)
                {
                case gviObjectType.gviObjectFeatureLayer:
                {
                    IFeatureLayerPickResult flpr = PickResult as IFeatureLayerPickResult;
                    int fid = flpr.FeatureId;
                    //加载多FeatureClass时要每次重新获取
                    _featureClass = (IFeatureClass)fcGUIDMap[flpr.FeatureLayer.FeatureClassId];
                    _featureLayer = flpr.FeatureLayer;

                    IFdeCursor cursor = null;
                    try
                    {
                        _buffer = _featureClass.CreateRowBuffer();
                        IQueryFilter filter = new QueryFilter();
                        //filter.AddSubField("oid");  //注意:StartEditFeatureGeometry里必须传入一个完整的rowbuffer,所以这里不能限定字段
                        filter.WhereClause = "oid =" + fid;
                        cursor             = _featureClass.Search(filter, false);
                        IRowBuffer row = null;

                        if ((row = cursor.NextRow()) != null)
                        {
                            _buffer = row as IRowBuffer;
                            int pos = _buffer.FieldIndex("Geometry");
                            oldfdeGeometry = _buffer.GetValue(pos) as IGeometry;
                            _buffer.SetValue(0, _featureClass.GetCount(null));          //修改fid为不同值,否则不是创建而是编辑
                        }
                    }
                    catch (COMException ex)
                    {
                        System.Diagnostics.Trace.WriteLine(ex.Message);
                    }
                    finally
                    {
                    }

                    this.axRenderControl1.FeatureManager.HighlightFeature(_featureClass, fid, System.Drawing.Color.Yellow);

                    resultCode = _geoEditor.StartEditFeatureGeometry(_buffer, _featureLayer, gviGeoEditType.gviGeoEditCreator);
                    if (!resultCode)
                    {
                        MessageBox.Show(this.axRenderControl1.GetLastError().ToString());
                    }
                }
                break;
                }
            }
        }
Пример #13
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (PickResult == null)
            {
                return;
            }
            IOverlayLabelPickResult pr    = PickResult as IOverlayLabelPickResult;
            IOverlayLabel           label = pr.OverlayLabel;

            this.Text = label.Text;
        }
Пример #14
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            IPickResult pr = PickResult;

            if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                if (PickResult != null)
                {
                    if (pr.Type == gviObjectType.gviObjectFeatureLayer)
                    {
                        IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                        int           fid            = flpr.FeatureId;
                        IFeatureLayer fl             = flpr.FeatureLayer;
                        foreach (IFeatureClass fc in fcMap_POI.Keys)
                        {
                            if (fc.Guid.Equals(fl.FeatureClassId))
                            {
                                IRowBuffer row = fc.GetRow(fid);

                                int    pos   = row.FieldIndex("Geometry");
                                IPoint point = row.GetValue(pos) as IPoint;
                                try
                                {
                                    INetworkLocation location = new NetworkLocation();
                                    location.Position = point;
                                    routeSolver.AddLocation(location);
                                }
                                catch (COMException ex)
                                {
                                    MessageBox.Show("所选点距离网络太远,请调整LocationSearchTolerance大小");
                                    return;
                                }

                                pos = row.FieldIndex("Name");
                                if (row.GetValue(pos) == null)
                                {
                                    pos = 0;
                                }
                                if (txtLocationNames.Text == "")
                                {
                                    txtLocationNames.Text = row.GetValue(pos).ToString();
                                }
                                else
                                {
                                    txtLocationNames.Text = txtLocationNames.Text + Environment.NewLine + row.GetValue(pos).ToString();
                                }
                                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow);
                            }
                        }
                    }
                }
            }
        }
Пример #15
0
        private void FeatureLayerPicks(IPickResultCollection pickResults)
        {
            UnhighlightFeature(pickResults);

            if (pickResults != null && pickResults.Count > 0)
            {
                for (int i = 0; i < pickResults.Count; i++)
                {
                    IPickResult pr = pickResults[i];
                    HighlightFeature(pr);
                }
            }
        }
Пример #16
0
        bool axRenderControl1_RcMouseHover(uint Flags, int X, int Y)
        {
            pic = this.axRenderControl1.Camera.ScreenToWorld(X, Y, out point);
            if (point == null || pic == null)
            {
                return(false);
            }
            IOverlayLabelPickResult pr    = pic as IOverlayLabelPickResult;
            IOverlayLabel           label = pr.OverlayLabel;

            this.Text = label.Text;
            return(false);
        }
Пример #17
0
 void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
 {
     if (PickResult == null)
     {
         return;
     }
     this.axRenderControl1.FeatureManager.UnhighlightAll();
     if (PickResult.Type == gviObjectType.gviObjectTerrainImageLabel)
     {
         ITerrainImageLabelPickResult pr = PickResult as ITerrainImageLabelPickResult;
         pr.TerrainImageLabel.Highlight(Color.Red);
     }
 }
Пример #18
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            this.axRenderControl1.FeatureManager.UnhighlightAll();

            // 置空
            _buffer       = null;
            _featureLayer = null;

            if (PickResult != null)
            {
                switch (PickResult.Type)
                {
                case gviObjectType.gviObjectFeatureLayer:
                {
                    IFeatureLayerPickResult flpr = PickResult as IFeatureLayerPickResult;
                    int fid = flpr.FeatureId;
                    //加载多FeatureClass时要每次重新获取
                    _featureClass = (IFeatureClass)fcGUIDMap[flpr.FeatureLayer.FeatureClassId];
                    _featureLayer = flpr.FeatureLayer;

                    IFdeCursor cursor = null;
                    try
                    {
                        _buffer = _featureClass.CreateRowBuffer();
                        QueryFilter filter = new QueryFilter();
                        //filter.AddSubField("oid");  //注意:StartEditFeatureGeometry里必须传入一个完整的rowbuffer,所以这里不能限定字段
                        filter.WhereClause = "oid =" + fid;
                        cursor             = _featureClass.Search(filter, false);
                        IRowBuffer row = null;
                        if ((row = cursor.NextRow()) != null)
                        {
                            _buffer = row as IRowBuffer;
                            int pos = _buffer.FieldIndex("Geometry");
                            oldfdeGeometry = _buffer.GetValue(pos) as IGeometry;
                        }
                    }
                    catch (COMException ex)
                    {
                        System.Diagnostics.Trace.WriteLine(ex.Message);
                    }
                    finally
                    {
                    }

                    this.axRenderControl1.FeatureManager.HighlightFeature(_featureClass, fid, System.Drawing.Color.Yellow);
                    EditGeometry();
                }
                break;
                }
            }
        }
Пример #19
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (IntersectPoint == null)
            {
                return;
            }

            if (EventSender.Equals(gviMouseSelectMode.gviMouseSelectClick))
            {
                this.axRenderControl1.InteractMode        = gviInteractMode.gviInteractNormal;
                this.axRenderControl1.RcMouseClickSelect -= new _IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect);


                //把视频加入list,同时更新界面
                locationName   = tmpTV.ViewshedObject.Guid.ToString();
                cp             = new CameraProperty();
                cp.name        = locationName;
                cp.X           = tmpTV.ViewshedObject.Position.X;
                cp.Y           = tmpTV.ViewshedObject.Position.Y;
                cp.Z           = tmpTV.ViewshedObject.Position.Z;
                cp.Heading     = tmpTV.ViewshedObject.Angle.Heading;
                cp.Roll        = tmpTV.ViewshedObject.Angle.Roll;
                cp.Tilt        = tmpTV.ViewshedObject.Angle.Tilt;
                cp.AspectRatio = tmpTV.ViewshedObject.AspectRatio;
                cp.FieldOfView = tmpTV.ViewshedObject.FieldOfView;

                videoList.Add(tmpTV.ViewshedObject);
                cp.index = videoList.Count - 1;

                DataRow dr = dt.NewRow();
                dr["Name"]     = locationName;
                dr["Location"] = cp;
                dr["Object"]   = tmpTV;
                dt.Rows.Add(dr);

                this.dataGridView1.Rows[dt.Rows.Count - 1].Selected = true;

                pf.SetSource(tmpTV);
            }
            else if (EventSender.Equals(gviMouseSelectMode.gviMouseSelectMove))
            {
                this.axRenderControl1.Camera.GetCamera(out vector, out angle);
                tmpTV.SetAngle(angle);

                positionPoint    = IntersectPoint;
                positionPoint.Z += 10;
                tmpTV.SetPosition(positionPoint);
            }
        }
Пример #20
0
 void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
 {
     if (PickResult == null)
     {
         return;
     }
     if (PickResult.Type == gviObjectType.gviObjectRenderArrow)
     {
         IRenderArrowPickResult pr = PickResult as IRenderArrowPickResult;
         if (pr != null)
         {
             pr.RenderArrow.Highlight(System.Drawing.Color.Yellow);
         }
     }
 }
Пример #21
0
 private void HighlightFeature(IPickResult pr)
 {
     if (pr.Type == i3dObjectType.i3dObjectFeatureLayer)
     {
         IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
         int           fid            = flpr.FeatureId;
         IFeatureLayer fl             = flpr.FeatureLayer;
         foreach (IFeatureClass fc in featureClasses)
         {
             if (fc.Guid.Equals(fl.FeatureClassId))
             {
                 _axRenderControl.FeatureManager.HighlightFeature(fc, fid, 0xffff0000);
             }
         }
     }
 }
Пример #22
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            IPickResult pr = PickResult;
            IRenderModelPointPickResult renderpr = pr as IRenderModelPointPickResult;

            if (renderpr != null)
            {
                IRenderModelPoint mp = renderpr.ModelPoint;
                if (mp.ModelName.Contains("yibiaopan.osg") || mp.ModelName.Contains("zhizhen.osg"))
                {
                    dxform = new DXForm();
                    dxform.Show();
                    clickFlag = 1;
                }
            }
        }
Пример #23
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            IPickResult pr = PickResult;

            if (pr == null && CTRL && Mask == gviModKeyMask.gviModKeyCtrl)
            {
                return;
            }

            if (!CTRL || (CTRL && Mask != gviModKeyMask.gviModKeyCtrl))   //ctrl键
            {
                this.axRenderControl1.FeatureManager.UnhighlightAll();
            }

            if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                if (PickResult != null)
                {
                    if (pr.Type == gviObjectType.gviObjectFeatureLayer)
                    {
                        IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                        int           fid            = flpr.FeatureId;
                        IFeatureLayer fl             = flpr.FeatureLayer;
                        foreach (IFeatureClass fc in fcMap.Keys)
                        {
                            if (fc.Guid.Equals(fl.FeatureClassId))
                            {
                                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow);
                            }
                        }

                        WindowParam wp = new WindowParam();
                        wp.FilePath          = @"D:\05_CityMaker_DeveloperKit\trunk\SDK\Samples\JS\beginner\HTMLWindow\PropertyWindow.html";
                        wp.Position          = gviHTMLWindowPosition.gviWinPosCenterParent;
                        wp.SizeX             = 200;
                        wp.SizeY             = 150;
                        wp.Hastitle          = false;
                        wp.IsPopupWindow     = false;
                        wp.UseMoveHoverEvent = true;
                        wp.HideOnClick       = false;
                        wp.WinId             = fid;
                        IHTMLWindow hw = this.axRenderControl1 as IHTMLWindow;
                        hw.ShowPopupWindowEx(IntersectPoint, wp, true);
                    }
                }
            }
        }
Пример #24
0
 void g_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
 {
     if (PickResult == null)
     {
         return;
     }
     else
     {
         if (PickResult.Type == gviObjectType.gviObjectTableLabel)
         {
             ITableLabelPickResult tlpr = PickResult as ITableLabelPickResult;
             gviObjectType         type = tlpr.Type;
             ITableLabel           fl   = tlpr.TableLabel;
             MessageBox.Show("拾取到" + type + "类型,名称为" + fl.TitleText);
         }
     }
 }
Пример #25
0
 void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
 {
     if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
     {
         this.axRenderControl1.FeatureManager.UnhighlightAll();
         IPickResult pr = PickResult;
         if (pr != null && pr.Type == gviObjectType.gviObjectFeatureLayer)
         {
             IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
             IFeatureLayer           fl   = flpr.FeatureLayer;
             this.axRenderControl1.FeatureManager.HighlightFeature(fcuidMap[fl.FeatureClassId] as IFeatureClass, flpr.FeatureId, System.Drawing.Color.Red);
         }
         else
         {
             return;
         }
     }
 }
Пример #26
0
 public override void RcMouseDragSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseDragSelectEvent e)
 {
     if (e.pickResults == null || e.pickResults.Count == 0)
     {
         return;
     }
     WaitForm.Start("正在渲染流向...", "请稍后");
     for (int i = 0; i < e.pickResults.Count; i++)
     {
         IPickResult pr = e.pickResults[i];
         if (pr == null || pr.Type != gviObjectType.gviObjectFeatureLayer)
         {
             continue;
         }
         ShowFlowDirect(pr as IFeatureLayerPickResult);
     }
     WaitForm.Stop();
 }
Пример #27
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (PickResult != null)
            {
                if (PickResult.Type == gviObjectType.gviObjectFeatureLayer)
                {
                    IFeatureLayerPickResult flpr = PickResult as IFeatureLayerPickResult;
                    int           fid            = flpr.FeatureId;
                    IFeatureLayer fl             = flpr.FeatureLayer;
                    foreach (IFeatureClass fc in fcMap.Keys)
                    {
                        if (fc.Guid.Equals(fl.FeatureClassId))
                        {
                            IRowBuffer fdeRow = fc.GetRow(fid);
                            int        nPos   = fdeRow.FieldIndex("Geometry");
                            switch (source)
                            {
                            case SOURCE.SELECT1:
                                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow);
                                geo1.AddGeometry(fdeRow.GetValue(nPos) as IPolygon);
                                drawLabel(IntersectPoint, "要素一", System.Drawing.Color.Yellow);
                                break;

                            case SOURCE.SELECT2:
                                this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Red);
                                geo2.AddGeometry(fdeRow.GetValue(nPos) as IPolygon);
                                drawLabel(IntersectPoint, "要素二", System.Drawing.Color.Yellow);
                                break;
                            }
                            SelectObject obj = new SelectObject();
                            obj.FC = fc;
                            obj.ID = fid;
                            objToHide.Add(obj);
                        }
                    } // end foreach
                }
            }
            if (source == SOURCE.SELECT1 || source == SOURCE.SELECT2)
            {
                this.axRenderControl1.RcMouseClickSelect -= new _IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect);

                this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;
            }
        }
Пример #28
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (PickResult == null)
            {
                return;
            }

            if (EventSender == gviMouseSelectMode.gviMouseSelectMove)
            {
                if (currentLabel != null)
                {
                    currentLabel.Position = IntersectPoint;
                }
            }
            else if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                switch (mode)
                {
                case 1:
                {
                    this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;
                }
                break;

                case 2:
                {
                    if (clickCount == 0)
                    {
                        ILabelPickResult pr = PickResult as ILabelPickResult;
                        if (pr != null)
                        {
                            currentLabel = pr.Label;
                            clickCount++;
                        }
                    }
                    else if (clickCount == 1)
                    {
                        this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;
                    }
                }
                break;
                }
            }
        }
Пример #29
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            IPickResult pr = PickResult;

            if (pr == null)
            {
                return;
            }

            if (EventSender == gviMouseSelectMode.gviMouseSelectClick)
            {
                if (pr.Type == gviObjectType.gviObjectFeatureLayer)
                {
                    // 高亮Polygon
                    this.axRenderControl1.FeatureManager.UnhighlightAll();
                    IFeatureLayerPickResult flpr = pr as IFeatureLayerPickResult;
                    fid = flpr.FeatureId;
                    IFeatureLayer fl = flpr.FeatureLayer;
                    foreach (IFeatureClass fc in fcMap.Keys)
                    {
                        if (fc.Guid.Equals(fl.FeatureClassId))
                        {
                            IRowBuffer           fdeRow = fc.GetRow(fid);
                            IFieldInfoCollection col    = fdeRow.Fields;
                            for (int i = 0; i < col.Count; ++i)
                            {
                                IFieldInfo info = col.Get(i);
                                if (info.GeometryDef != null &&
                                    info.GeometryDef.GeometryColumnType == gviGeometryColumnType.gviGeometryColumnPolyline)
                                {
                                    int nPos = fdeRow.FieldIndex(info.Name);
                                    polyline = fdeRow.GetValue(nPos) as IPolyline;
                                    this.axRenderControl1.FeatureManager.HighlightFeature(fc, fid, System.Drawing.Color.Yellow);
                                    //获取路宽
                                    nPos = fdeRow.FieldIndex("WIDTH");
                                    //width = (double)fdeRow.GetValue(nPos);
                                    width = 10;
                                }
                            }
                        } // end " if (fc.Guid.Equals(fl.FeatureClassId))"
                    }     // end "foreach (IFeatureClass fc in fcMap.Keys)"
                }
            }
        }
Пример #30
0
        void axRenderControl1_RcMouseClickSelect(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            if (PickResult.Type == gviObjectType.gviObjectTerrain)
            {
                gviGetElevationType mode = gviGetElevationType.gviGetElevationFromMemory;
                switch (this.toolStripGetElevationType.Text)
                {
                case "GetElevationFromMemory":
                    mode = gviGetElevationType.gviGetElevationFromMemory;
                    break;

                case "GetElevationFromDatabase":
                    mode = gviGetElevationType.gviGetElevationFromDatabase;
                    break;
                }
                double elevatation = this.axRenderControl1.Terrain.GetElevation(IntersectPoint.X, IntersectPoint.Y, mode);
                MessageBox.Show("当前位置高程为:" + elevatation.ToString());
            }
        }