Tôi đã tìm kiếm thông qua các câu hỏi khác nhưng không có câu hỏi nào phù hợp với trường hợp của tôi.Vị trí chuột trong Vải đáp ứng HTML 5
Tôi có một yếu tố canvas:
<canvas id="linear-synoptic-map" width="1053px" height="1000px" ng-click="linearSynopticCtrl.canvasClicked($event)" ng-mousemove="linearSynopticCtrl.mouseMovedOverCanvas($event)">
</canvas>
Và tôi nhận được vị trí với chức năng này:
linearSynopticCtrl.getPositionFromEvent = function (event) {
var rect = linearSynopticCtrl.canvas.getBoundingClientRect();
var x = event.x - rect.left;
var y = event.y - rect.top;
return new Point(x,y);
};
Vấn đề là bức tranh cần phải được đáp ứng vì vậy tôi đã thêm quy tắc css sau:
canvas#linear-synoptic-map {
width: 100%;
}
Khi thay đổi kích thước xảy ra (khi kích thước canvas bị thu nhỏ o ver định nghĩa hoặc mở rộng trên định nghĩa: 1053x1000) một khoảng cách bắt đầu hiển thị giữa vị trí chuột chính xác và vị trí trả về bởi hàm.
Tôi cũng đã cố gắng đạt được vị trí với cách tiếp cận này:
linearSynopticCtrl.getPositionFromEvent = function (event) {
var x = event.x - linearSynopticCtrl.canvas.offsetLeft;
var y = event.y - linearSynopticCtrl.canvas.offsetTop;
return new Point(x,y);
};
Nhưng tôi nhận được kết quả tồi tệ hơn nhiều.
Có ai biết cách khắc phục sự cố này không?
Hãy thử thay đổi kích thước chiều rộng thực tế và chiều cao của vải để phù hợp với kích thước màn hình trên cửa sổ thay đổi kích thước thay vì css thu nhỏ, sau đó sử dụng drawImage để kéo dài hình ảnh của bạn thành kích thước. Tất nhiên, bạn sẽ phải theo dõi quy mô thủ công và điều chỉnh vị trí chuột của bạn cho phù hợp. – Frank