static Vector2 Round(Vector2 raw, SnapSetting snapSetting) { double multiple; if (snapSetting == SnapSetting.None) { return(raw); } else if (snapSetting == SnapSetting.Half) { multiple = 0.5; } else if (snapSetting == SnapSetting.Tenth) { multiple = 0.1; } else if (snapSetting == SnapSetting.Hundredth) { multiple = 0.01; } else { throw new InvalidOperationException("Internal error: Invalid snap settings."); } return(new Vector2(RoundDownToMultiple(raw.x, multiple), RoundDownToMultiple(raw.y, multiple))); }
private void mapControl_OP_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e) { if (m_currentButton == 1 || m_currentButton == 2 || m_currentButton == 3) { var pt = mapControl_OP.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); SnapSetting.getSnapPoint(pt); } }
/// <summary> /// Will consume the event and declare the GUI changed. Uses given delta instead of the event's. /// </summary> public void UpdateDrag(Event e, Rect rect, Vector2 delta, SnapSetting snapSetting) { if (dragHandler.IsDragging(e, rect)) { e.Use(); rawPosition += delta; marker.Position = Round(rawPosition, snapSetting); GUI.changed = true; } }
public override void OnMouseMove(int Button, int Shift, int X, int Y) { IPoint pPoint = m_mapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); pPoint = SnapSetting.getSnapPoint(pPoint); if (Button == 1) { if (m_rotateTracker != null) { m_rotateTracker.OnMouseMove(pPoint); } } }
void Load() { var save = ChartEditorSave.Load(); if (save != null) { chart = save.chart; customPalette = save.palette; scale = save.scale; showGrids = save.showGrids; snapSetting = save.snapSetting; panelChartFoldout = save.panelChartFoldout; panelEditorOptionsFoldout = save.panelEditorOptionsFoldout; panelMarkerOptionsFoldout = save.panelMarkerOptionsFoldout; } }
public override void OnMouseDown(int Button, int Shift, int X, int Y) { if (Button == 1) { //if (m_engineEditor.SelectionCount == 0) return; m_rotateTracker.Display = m_mapControl.ActiveView.ScreenDisplay; //以所有选择要素的的中心点为旋转支点 var pEnumFeature = m_hookHelper.ActiveView.Selection as IEnumFeature; //pEnumFeature = m_engineEditor.EditSelection; pEnumFeature.Reset(); var pFeature = pEnumFeature.Next(); if (pFeature == null) { return; } IEnvelope pSelEnvelope = pFeature.Extent; //选择要素集的Envelope pFeature = pEnumFeature.Next(); while (pFeature != null) { if (pFeature.Extent.IsEmpty == false) { pSelEnvelope.Union(pFeature.Extent); } pFeature = pEnumFeature.Next(); } IPoint pPt = new PointClass(); pPt.PutCoords((pSelEnvelope.XMin + pSelEnvelope.XMax) / 2, (pSelEnvelope.YMin + pSelEnvelope.YMax) / 2); //设置要旋转的几何要素 SetTrackGeometry(pPt); IPoint pStartPoint = m_mapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); pStartPoint = SnapSetting.getSnapPoint(pStartPoint); if (m_rotateTracker != null) { m_rotateTracker.OnMouseMove(pStartPoint); m_rotateTracker.OnMouseDown(); } } }
private void mapControl_OP_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { if (e.button == 1 && m_currentButton > 0) { //弹出右键菜单 //DataEditCommon.contextMenu.PopupMenu(e.x, e.y, this.mapControl_OP.hWnd); var pt = mapControl_OP.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); pt = SnapSetting.getSnapPoint(pt); switch (m_currentButton) { case 1: var gasPressureInfoEnteringForm = new GasPressureInfoEntering { GasPressurePoint = pt }; gasPressureInfoEnteringForm.ShowDialog(); //绘制瓦斯压力点 m_currentButton = 0; //解除当前按钮 break; case 2: var gasContentInfoEnteringForm = new GasContentInfoEntering { GasContentPoint = pt }; gasContentInfoEnteringForm.ShowDialog(); //绘制瓦斯含量点 m_currentButton = 0; //解除当前按钮 break; case 3: var gasGushQuantityInfoEnteringForm = new GasGushQuantityInfoEntering { GasGushQuantityPoint = pt }; gasGushQuantityInfoEnteringForm.ShowDialog(); //绘制瓦斯涌出量点 m_currentButton = 0; //解除当前按钮 break; } } }
void DrawSnapSetting() { var snapLabel = new GUIContent("Snap Setting", "How should the markers be snapped to the grid?"); snapSetting = (SnapSetting)EditorGUILayout.EnumPopup(snapLabel, snapSetting); }