private void PictureBox_Mouse_Down(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (isMoving) { //đang di chuyển hình } else { if (hinhHienTai == null || hinhHienTai.KiemTraViTri(e.Location) == -1) { hinhHienTai = LayHinhVeHienTai(IDhinhHienTai); } if (hinhHienTai != null) { hinhHienTai.Mouse_Down(e); //gọi sự kiện mouse_down của hình pictureBox.Refresh(); //làm mới hinhHienTai.VeKhung(pictureBox.CreateGraphics()); //vẽ 8 hình chữ nhật nhỏ (chấm vuông nhỏ) làm khung xung quanh lHV.listHinh.Insert(lHV.listHinh.Count, hinhHienTai); //thêm hình mới vào list } } } else { hinhHienTai = null; } }
private void PictureBox_Mouse_Move(object sender, MouseEventArgs e) { lblPosition.Text = "Vị trí chuột: (" + e.Location.X.ToString() + ", " + e.Location.Y.ToString() + ")"; if (IDhinhHienTai == -1) //nút "Vị trí và kích cỡ" đã được bấm { if (isMoving == false) { for (int i = lHV.listHinh.ToArray().Length - 1; i >= 0; i--) //kiểm tra từng hình xem hình nào bị... { int vt = (lHV.listHinh.ToArray())[i].KiemTraViTri(e.Location); if (vt == 0) //...chuột di chuyển trên bề mặt { hinhHienTai = (lHV.listHinh.ToArray())[i]; if (e.Button == MouseButtons.Left) //=> sẽ di chuyển hình này { Cursor = Cursors.Hand; hinhHienTai.diChuyen = true; //cho phép di chuyển hinhHienTai.thayDoiKichThuoc = false; //không cho phép thay đổi kích thước isMoving = true; //bật cờ đang di chuyển BtnxCircle_Click(btnxConTro, e); //mượn nút "Chuột" để di chuyển (bản thân nút "Vị trí và kích cỡ" sẽ không di chuyển hình pictureBox.Refresh(); hinhHienTai.VeKhung(pictureBox.CreateGraphics()); //vẽ khung lHV.listHinh.RemoveAt(i); //sau khi di chuyển sẽ phát sinh hình mới tại vị trí mới=>xóa hình cũ } else // chuột đi qua mà không bấm { isMoving = false; hinhHienTai.diChuyen = false; } Cursor = Cursors.Hand; pictureBox.Refresh(); hinhHienTai.VeKhung(pictureBox.CreateGraphics()); break; } else if (vt > 0) //chuột chỉ đúng điểm điều khiển (1 trong 8 chấm vuông nhỏ làm khung) => sẽ thay đổi kích thước hình này { hinhHienTai = (lHV.listHinh.ToArray())[i]; if (e.Button == MouseButtons.Left) { hinhHienTai.thayDoiKichThuoc = true; //cho phép thay đổi kích thước hinhHienTai.diChuyen = false; //không cho phép di chuyển isMoving = true; BtnxCircle_Click(btnxConTro, e); pictureBox.Refresh(); hinhHienTai.VeHCNDiemDieuKhien(pictureBox.CreateGraphics(), 5); lHV.listHinh.RemoveAt(i); } else { isMoving = false; hinhHienTai.thayDoiKichThuoc = false; } Cursor = Cursors.Cross; pictureBox.Refresh(); hinhHienTai.VeHCNDiemDieuKhien(pictureBox.CreateGraphics(), 5); break; } else //tìm trong danh sách không có hình nào bị chuột đi qua { Cursor = Cursors.Default; } } } } else //không phải nút "Vị trí và kích cỡ" => là nút vẽ hình hoặc nút "Chuột" { if (hinhHienTai != null) { if (hinhHienTai.KiemTraViTri(e.Location) > 0) //nếu chuột chỉ đúng 1 trong 8 chấm vuông nhỏ => đổi chuột thành hình dấu + { Cursor = Cursors.Cross; } else if (hinhHienTai.KiemTraViTri(e.Location) == 0) //tương tự với lúc chuột nằm trong hình => chuột hình bàn tay { Cursor = Cursors.Hand; } else { Cursor = Cursors.Default; //còn lại thì mặc định } } if (e.Button == MouseButtons.Left) { if (hinhHienTai != null) { hinhHienTai.Mouse_Move(e); pictureBox.Refresh(); hinhHienTai.VeKhung(pictureBox.CreateGraphics()); } } } }