예제 #1
0
 /// <summary>
 /// 将当前renderModelPoint所在的位置插入MotionPath中
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnInsertWaypoint_Click(object sender, EventArgs e)
 {
     if (renderModelPoint != null)
     {
         IModelPoint modelPoint = renderModelPoint.GetFdeGeometry() as IModelPoint;
         IMatrix     matrix     = new Matrix();
         matrix = modelPoint.AsMatrix();
         motionPath.AddWaypointByMatrix(matrix, motionPath.TotalDuration + 4);
     }
 }
예제 #2
0
파일: MainForm.cs 프로젝트: batuZ/Samples
        void axRenderControl1_RcMouseClickSelect_Edit(IPickResult PickResult, IPoint IntersectPoint, gviModKeyMask Mask, gviMouseSelectMode EventSender)
        {
            this.axRenderControl1.FeatureManager.UnhighlightAll();

            // 置空
            currentGeometry = null;
            _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;

                case gviObjectType.gviObjectRenderModelPoint:
                {
                    IRenderModelPointPickResult flpr = PickResult as IRenderModelPointPickResult;
                    rmodelpoint     = flpr.ModelPoint;
                    currentGeometry = rmodelpoint;
                    oldfdeGeometry  = rmodelpoint.GetFdeGeometry();
                    EditGeometry();
                }
                break;

                case gviObjectType.gviObjectRenderPoint:
                {
                    IRenderPointPickResult flpr = PickResult as IRenderPointPickResult;
                    rpoint          = flpr.Point;
                    currentGeometry = rpoint;
                    EditGeometry();
                }
                break;

                case gviObjectType.gviObjectRenderPolyline:
                {
                    IRenderPolylinePickResult flpr = PickResult as IRenderPolylinePickResult;
                    rpolyline       = flpr.Polyline;
                    currentGeometry = rpolyline;
                    EditGeometry();
                }
                break;

                case gviObjectType.gviObjectRenderPolygon:
                {
                    IRenderPolygonPickResult flpr = PickResult as IRenderPolygonPickResult;
                    rpolygon        = flpr.Polygon;
                    currentGeometry = rpolygon;
                    EditGeometry();
                }
                break;
                }
            }
        }