protected override void OnMouseUp(MouseEventArgs e) { if ((e.Button & MouseButtons.Left) != 0) { PointF point = new PointF(e.X - m_pOrigin.X, e.Y - m_pOrigin.Y); switch (m_eControlMode) { case E_VIEW_CONTROL_MODE.VCM_POINT: { if (ModifierKeys == Keys.Alt) { REGION_CONTROL_STYLES HitRCS = REGION_CONTROL_STYLES.NONE; XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { HitRCS = xRegion.HitTest(point.X / m_fZ, point.Y / m_fZ, xRegion.Spaces / m_fZ, ModifierKeys); if (HitRCS != REGION_CONTROL_STYLES.NONE) { if (m_xActiveRegion != null && xRegion != null && m_xActiveRegion != xRegion) { m_xActiveRegion.SetAlign(xRegion, HitRCS); break; } } else { xRegion.SetAlign(null, HitRCS); } xRegion = (XRegion)m_xOverlay.Next(); } } } else if (m_xSelectRegion.ControlSelect == REGION_CONTROL_STYLES.BR) { SelectControl(); m_xSelectRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; Refresh(); } if (m_bMouseMove == true) { m_bMouseMove = false; Refresh(); } InvokeOnClick(this, null); } break; case E_VIEW_CONTROL_MODE.VCM_PAN: { m_pOrigin.X = e.X - m_pStartPan.X; m_pOrigin.Y = e.Y - m_pStartPan.Y; Refresh(); } break; } } }
protected override void OnMouseMove(MouseEventArgs e) { PointF point = new PointF(e.X - m_pOrigin.X, e.Y - m_pOrigin.Y); switch (m_eControlMode) { case E_VIEW_CONTROL_MODE.VCM_POINT: { if ((e.Button & MouseButtons.Left) != 0) { m_bMouseMove = true; if (ModifierKeys == Keys.Alt && m_xOverlay != null) { XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { xRegion.HitTest(point.X / m_fZ, point.Y / m_fZ, xRegion.Spaces / m_fZ, ModifierKeys); xRegion = (XRegion)m_xOverlay.Next(); } } } if (m_xActiveRegion != null && m_xOverlay != null && m_xOverlay.Count != 0) { m_xActiveRegion.Control(point.X, point.Y, m_fZ, m_fZ); if (m_xSelect.Count > 1) { if (m_xActiveRegion.ControlSelect == REGION_CONTROL_STYLES.MC) { XRegion xRegion = (XRegion)m_xSelect.First(); for (int n = 0; n < m_xSelect.Count; n++) { if (xRegion != null) { xRegion.Control(point.X, point.Y, m_fZ, m_fZ); xRegion = (XRegion)m_xSelect.Next(); } } } } Refresh(); } else if (m_xSelectRegion.ControlSelect == REGION_CONTROL_STYLES.BR) { m_xSelectRegion.Control(point.X, point.Y, m_fZ, m_fZ); Refresh(); } } } break; case E_VIEW_CONTROL_MODE.VCM_PAN: { if ((e.Button & MouseButtons.Left) != 0) { m_pOrigin.X = e.X - m_pStartPan.X; m_pOrigin.Y = e.Y - m_pStartPan.Y; CalcScreen(); Refresh(); } } break; } }