簡體   English   中英

畫布上的鼠標位置

[英]Mouse position on canvas painting

下面的代碼正確繪制,但它繪制到錯誤的坐標。 它應該繪制鼠標所在的位置。 我無法發現我的錯誤。 謝謝。

的jsfiddle

container.mousedown(function(e) {

    var parentOffset = $(this).offset(); 
    var x = e.pageX - parentOffset.left;
    var y = e.pageY - parentOffset.top;

    context_temp.beginPath();
    context_temp.moveTo(x, y);
    started = true;
});

container.mousemove(function(e) {

    var parentOffset = $(this).offset(); 
    var x = e.pageX - parentOffset.left;
    var y = e.pageY - parentOffset.top;

    if (started) {
        context_temp.lineTo(x, y);
        context_temp.stroke();
    }
});

container.mouseup(function(e) {

    var parentOffset = $(this).offset(); 
    var x = e.pageX - parentOffset.left;
    var y = e.pageY - parentOffset.top;

    if (started) {
        container.mousemove(x, y);
        started = false;
        update();
    }
});

您在CSS中設置畫布寬度和高度。 這只是拉伸畫布和圖像一樣。

效果正在錯誤的地方。

相反,您需要在標簽本身上設置畫布尺寸:

<canvas width="400" height="400"></canvas>

<canvas>有自己的widthheight ,它不僅定義了它的物理大小(除非CSS介入),還有它的邏輯大小(繪圖表面上像素的行數/列數)。 當CSS更改大小時,畫布會拉伸以適合,但不會更改其邏輯大小。 基本上,像素也會拉伸,因此邏輯和物理坐標不再匹配。

要解決此問題,您可以進行數學運算以匹配坐標,或者僅使用畫布自己的寬度/高度來調整它們的大小,或者在事實之后設置畫布的寬度和高度屬性以匹配寬度和高度由CSS設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM