Bắt sự kiện click chuột trong C#
WM_MOUSEMOVE : bắt sự kiện khi di chuyển chuột trong màn hình đồ họa Tuơng tự với chuột giữa và chuột phải WM_MBUTTONDBLCLKWM_MBUTTONDOWNWM_MBUTTONUPWM_RBUTTONDBLCLKWM_RBUTTONDOWN WM_RBUTTONUP Ví dụ minh họa click chuột#include
Hi chào mừng các bạn đến với chủ đề Học Lập Trình OpenGL Tại blog : Phát Triển Phần Mềm 123AZBài hôm nay chúng ta sẽ cùng đi tìm hiểu về kỹ thuật nhận sự kiện khi click chuột trong opengl Đây là một trong số những kỹ thuật rất cơ bản và phổ biến trong lập trình đồ họa. I. Lý thuyết cơ bản.1. Bắt sự kiện bấm chuột trái, chuột phải và chuột giữa.Step1: Viết một hàm MouseButton như sau:
void MouseButton(int type_button, int state, int x, int y) { if (type_button == GLUT_LEFT_BUTTON) { if (state == GLUT_UP) { //Todo } else { //Todo } } else if(type_button == GLUT_RIGHT_BUTTON) { if (state == GLUT_UP) { //Todo } else { //Todo } } }
+ type_button : Là kiểu phím bấm chuột, đó thể hiện là chuột trái hay chuột phải + state: là trạng thái bấm xuông hay nhả ra. + x,y là tọa độ hiện tại của chuột trên màn hình windows. Chúng ta có 3 loại cho type_button được định nghĩa trong glut.h như sau #define GLUT_LEFT_BUTTON 0 Từ đó chúng ta hoàn toàn có thể dễ dàng bắt được button nào của chuột được sử dụng. + Step 2: Gọi hàm MouseButton trong hàm main thông qua hàm xử lý chuột như sau: glutMouseFunc(MouseButton); 2. Bắt sự kiện khi thực hiện move chuột.Step 1: Viết một hàm MouseMove như sau:
void mouseMove(int x, int y) { //Todo }
+ x,y là tọa độ của chuột liên tục cập nhật khi chuột đang được move. Step2: Trong hàm Main gọi hàm MouseMove như sau: glutMotionFunc(mouseMove); Note: Hàm MouseMove là hàm chạy gần như liên tục khi chúng ta di chuột liên tục. Ok. Các bạn có thể thử và đặt debug vào để kiểm tra. II. Thực hành.Có thể nhiều bạn sẽ thắc mắc rằng, Vậy với mouse chúng ta sử dụng mouse để làm gì trong lập trình đồ họa. Mouse sử dụng rất phổ biến và không thể thiếu. Với Game: Mouse sử dụng để định dạng phương hướng nhìn của model chủ vào các model khác, hoặc nhận nhiệm vụ là bắn đạn, tấn công của các nhân vật game…. Với phần mềm đồ họa: Mouse sử dụng để select đối tượng, kéo đối tượng, hoặc xoay cameral để nhìn đối tượng theo nhiều hướng. Và nó sử dụng theo bất cứ mục đích nào bạn mong muốn. Ok, Và bây giờ chúng ta sẽ thực hành việc sử dụng kỹ thuật bắt sự kiện mouse để thực hay quay cameral vòng quanh vật. + Yêu cầu: – Chỉ khi bấm chuột trái (phải) thì cameral mới có thể quay quanh vât. – Nếu nhả chuột thì ko thể quay cameral quanh vật. – Khi kéo chuột move từ vị trí A sang vị trí B theo tọa độ màn hình windows, thì cameral trong opengl sẽ quay đi một góc anpha theo trục Y. Hãy cùng xem hình mình họa Chúng ta cần tính được z’ và x’ mỗi khi kéo chuột từ A đến B Full Code:
#include
|