Dưới đây là làm thế nào để nhấp di chuyển chuột để tạo một hình chữ nhật
Tạo các biến:
var isDrawing=false;
var startX;
var startY;
Trong xử lý sự kiện mousedown của bạn:
- Nếu đây là nhấp chuột bắt đầu, hãy đặt isDrawing flag và thiết lập startX/Y.
- Nếu đây là nhấp chuột kết thúc, hãy xóa cảnh isDrawing và vẽ hình chữ nhật.
Bạn cũng có thể muốn thay đổi con trỏ chuột để người dùng biết họ đang vẽ.
if(isDrawing){
isDrawing=false;
ctx.beginPath();
ctx.rect(startX,startY,mouseX-startX,mouseY-startY);
ctx.fill();
canvas.style.cursor="default";
}else{
isDrawing=true;
startX=mouseX;
startY=mouseY;
canvas.style.cursor="crosshair";
}
Đây là một Fiddle: http://jsfiddle.net/m1erickson/7uNfW/
Thay vì nhấp chuột di chuyển, làm thế nào về việc sử dụng kéo để tạo một hình chữ nhật?
Tạo các biến:
var mouseIsDown=false;
var startX;
var startY;
Trong xử lý sự kiện mousedown của bạn, đặt cờ mouseIsDown và thiết lập startx/Y.
Tùy chọn, thay đổi con trỏ để người dùng biết họ đang kéo hình chữ nhật.
mouseIsDown=true;
startX=mouseX;
startY=mouseY;
canvas.style.cursor="crosshair";
Trong xử lý sự kiện mouseup của bạn, rõ ràng cờ mouseIsDown và vẽ rect
Nếu bạn đã thay đổi con trỏ, thay đổi nó trở lại.
mouseIsDown=false;
ctx.beginPath();
ctx.rect(startX,startY,mouseX-startX,mouseY-startY);
ctx.fill();
canvas.style.cursor="default";
Bạn có thể tách bản trình diễn đó thành * chỉ * các phần liên quan đến vấn đề vẽ không? Tôi không hoàn toàn tin rằng chúng ta cần các phần bao gồm 'spin', hoặc phân tích' document.location'. –
2 vấn đề của bạn là giống nhau từ nơi tôi nhìn thấy nó. Tôi nghĩ bạn có thể xem xét sử dụng một thử nghiệm đơn giản để xem đây có phải là "lần đầu tiên" hay "thứ hai" –