private void LButtonDown(PointF point) { if (m_xOverlay != null) { m_xActiveRegion = null; XRegion xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { if (REGION_CONTROL_STYLES.NONE != xRegion.SelectControl(point.X / m_fZ, point.Y / m_fZ, xRegion.Spaces / m_fZ, ModifierKeys)) { m_xActiveRegion = xRegion; break; } else if (REGION_CONTROL_STYLES.NONE != xRegion.ControlSelect) { if (m_xActiveRegion == null) { m_xActiveRegion = xRegion; } else { if (m_xActiveRegion.ControlSelect == REGION_CONTROL_STYLES.MC && (xRegion.ControlSelect != REGION_CONTROL_STYLES.MC || xRegion.InnerRegion(m_xActiveRegion) == true)) { m_xActiveRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; m_xActiveRegion = xRegion; } else { xRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; } } } xRegion = (XRegion)m_xOverlay.Next(); } } if (ModifierKeys != Keys.Alt) { if (m_xActiveRegion == null) { m_xSelect.Empty(); m_xSelectRegion.Set(point.X / m_fZ, point.Y / m_fZ, 1, 1, 0); m_xSelectRegion.SelectControl(point.X / m_fZ, point.Y / m_fZ, m_xSelectRegion.Spaces / m_fZ, ModifierKeys); m_xSelectRegion.ControlStyle = REGION_CONTROL_STYLES.BR; m_xSelectRegion.ControlSelect = REGION_CONTROL_STYLES.BR; } else { if (ModifierKeys == Keys.Control || m_xSelect.Count > 1) { AddSelect(m_xActiveRegion); float fCx = m_xActiveRegion.X; float fCy = m_xActiveRegion.Y; PointF Fix = m_xActiveRegion.Fix; xRegion = (XRegion)m_xSelect.First(); for (int n = 0; n < m_xSelect.Count; n++) { if (xRegion != null) { xRegion.ControlSelect = m_xActiveRegion.ControlSelect; if (m_xActiveRegion.ControlSelect == REGION_CONTROL_STYLES.MC) { PointF FixN = new PointF(Fix.X - fCx + xRegion.X, Fix.Y - fCy + xRegion.Y); xRegion.Fix = FixN; } xRegion = (XRegion)m_xSelect.Next(); } } } else { xRegion = (XRegion)m_xOverlay.First(); for (int n = 0; n < m_xOverlay.Count; n++) { if (xRegion != null) { if (m_xActiveRegion != xRegion && m_xSelect.Count == 1) { xRegion.ControlSelect = REGION_CONTROL_STYLES.NONE; } xRegion = (XRegion)m_xOverlay.Next(); } } m_xSelect.Empty(); AddSelect(m_xActiveRegion); } m_xOverlay.Exchange(m_xOverlay.First(), m_xActiveRegion); } Refresh(); } } }