/* --- Phương thức --- */ public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e) { commandChangeState = null; wasMove = false; selectMode = SelectionMode.None; Point point = drawArea.BackTrackMouse(new Point(e.X, e.Y)); // Kiểm tra có phải là đang resize int al = drawArea.TheLayers.ActiveLayerIndex; int n = drawArea.TheLayers[al].Graphics.SelectionCount; for (int i = 0; i < n; i++) { DrawObject o = drawArea.TheLayers[al].Graphics.GetSelectedObject(i); int handleNumber = o.HitTest(point); if (handleNumber > 0) { selectMode = SelectionMode.Size; // Giữ đối tượng cần resize resizedObject = o; resizedObjectHandle = handleNumber; // Khi resize một đối tượng phải unselect các đối tượng khác drawArea.TheLayers[al].Graphics.UnselectAll(); o.Selected = true; commandChangeState = new CommandChangeState(drawArea.TheLayers); break; } } // Kiểm tra có phải là đang move if (selectMode == SelectionMode.None) { int n1 = drawArea.TheLayers[al].Graphics.Count; DrawObject o = null; for (int i = 0; i < n1; i++) { if (drawArea.TheLayers[al].Graphics[i].HitTest(point) == 0) { o = drawArea.TheLayers[al].Graphics[i]; break; } } if (o != null) { selectMode = SelectionMode.Move; // Unselect tất cả nếu Ctrl chưa nhấn và một đối tượng chưa được chọn if ((Control.ModifierKeys & Keys.Control) == 0 && !o.Selected) { drawArea.TheLayers[al].Graphics.UnselectAll(); } o.Selected = true; commandChangeState = new CommandChangeState(drawArea.TheLayers); drawArea.Cursor = Cursors.SizeAll; } } // Kiểm tra có phải là đang group selection if (selectMode == SelectionMode.None) { if ((Control.ModifierKeys & Keys.Control) == 0) { drawArea.TheLayers[al].Graphics.UnselectAll(); } selectMode = SelectionMode.NetSelection; drawArea.DrawNetRectangle = true; } lastPoint.X = point.X; lastPoint.Y = point.Y; startPoint.X = point.X; startPoint.Y = point.Y; drawArea.Capture = true; drawArea.NetRectangle = DrawRectangle.GetNormalizedRectangle(startPoint, lastPoint); drawArea.Refresh(); }