/// <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); }
/// <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); } } }
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; }
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); } } } } } }
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; } } }
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); }
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); } } } } } }
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; } } } }
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; } } }
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); } }
private void FeatureLayerPick(IPickResult pickResult, IPoint position, i3dMouseSelectMode selectedModel) { UnhighlightFeature(pickResult); if (selectedModel == i3dMouseSelectMode.i3dMouseSelectClick) { FeaturePickOrCreate(pickResult, position); } }
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; } } }
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; }
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); } } } } } }
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); } } }
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); }
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); } }
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; } } }
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); } }
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); } } }
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); } } } }
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; } } }
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); } } } }
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); } } }
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; } } }
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(); }
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; } }
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; } } }
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)" } } }
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()); } }