void MapImage_MouseDown(SharpMap.Geometries.Point worldPos, MouseEventArgs e) { if (m_TargetLayerGuid == Guid.Empty) { return; } if (!m_IsMoveMode) { var area = GIS_V4.Utils.GeometryUtils.PointToArea(worldPos, 3, MapImage.Map.PixelWidth); var fds = new FeatureDataSet(); var zoneLayer = UserDbLayersManager.GetUserLayer(m_TargetLayerGuid); zoneLayer.DataSource.ExecuteIntersectionQuery(area.GetBoundingBox(), fds); if (fds.Tables.Count <= 0) { m_SelectedFeature = null; return; } if (fds.Tables[0].Rows.Count <= 0) { m_SelectedFeature = null; MapImage.RefreshFromCache(); return; } m_SelectedFeature = fds.Tables[0][0]; MapImage.RefreshFromCache(); } else { //tool in move mode if (e.Button == MouseButtons.Left) { //start shifting on mouse move m_IsShifting = true; m_ShiftBeginPnt = worldPos; m_LastShiftPnt = new SharpMap.Geometries.Point(worldPos.X, worldPos.Y); } } if (m_SelectedFeature != null && e.Button == MouseButtons.Right) { if (m_SelectedFeature.Geometry.GetBoundingBox().Contains(worldPos)) { m_CMenu.Show(MapImage, e.Location); } } }
void mi_Move_Click(object sender, EventArgs e) { m_IsMoveMode = true; m_LastMovedTargetLayerGuid = m_TargetLayerGuid; m_MiMove.Visible = false; m_MiApplyMovement.Visible = true; m_MiCancelMovement.Visible = true; m_BufZoneUserLayer = UserDbLayersManager.GetUserLayer(m_TargetLayerGuid); m_BufZoneLayer = (EidssUserBufZoneLayer)m_BufZoneUserLayer; m_BufZoneBeforeEdit = m_BufZoneLayer.FeatureRowToStruct(m_SelectedFeature); var wkb = m_SelectedFeature.Geometry.AsBinary();//.AsText(); m_GeomBeforeEdit = Geometry.GeomFromWKB(wkb); SubscribeApplyEvents(); MapImage.RefreshFromCache(); }
void m_MapImage_MouseMove(SharpMap.Geometries.Point worldPos, MouseEventArgs imagePos) { if (m_IsShifting && m_IsMoveMode) { var deltaX = worldPos.X - m_LastShiftPnt.X; var deltaY = worldPos.Y - m_LastShiftPnt.Y; if (m_SelectedFeature.Geometry is Polygon) { var geom = (Polygon)m_SelectedFeature.Geometry; foreach (var vertex in geom.ExteriorRing.Vertices) { vertex.X = vertex.X + deltaX; vertex.Y = vertex.Y + deltaY; } } m_LastShiftPnt = new SharpMap.Geometries.Point(worldPos.X, worldPos.Y); MapImage.RefreshFromCache(); } }
private DialogResult ApplyMovement(bool clearSelection) { var dialogResult = MessageBox.Show(Resources.gis_MtSelectBufZones_BZApplyWarning, "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (dialogResult == DialogResult.Yes) { m_IsMoveMode = false; //apply changes m_MiMove.Visible = true; m_MiApplyMovement.Visible = false; m_MiCancelMovement.Visible = false; if (UserDbLayersManager.GetLayerMetadata(m_TargetLayerGuid).m_PivotalLayer != PivotLayerType.None || m_IsMoveMode) { m_MiMove.Visible = false; } if (clearSelection) { m_SelectedFeature = null; } m_GeomBeforeEdit = null; MapImage.RefreshFromCache(); UnsubscribeApplyEvents(); } else if (dialogResult == DialogResult.No) { m_IsMoveMode = false; UndoMovement(clearSelection); } return(dialogResult); }