1

我正在使用鼠标的 x/y 坐标在画布上绘图,但我正在绘制的线条总是会画出一点点,请尝试在此处绘制:http: //zachrip.net/widgets/onlineedit/index .html(左上角)作为我的意思的一个例子。没有抵消所以我不考虑它,所以我不知道问题是什么?

4

1 回答 1

0

这里的问题是您通过 CSS 设置 Canvas Element Size,但没​​有设置Drawing Surface Size

绘图表面的默认大小为 300 像素 x 150 像素。由于您没有设置它,而是设置了元素大小,因此浏览器会缩放绘图表面大小以适合元素。您通过鼠标事件获得的 x 和 y 坐标对应于元素大小,而不是实际的绘图表面大小。这就是为什么你得到偏移量。

现在,我之前发布的小提琴只是让你设置绘图表面的大小,而不是元素。这行得通,但是如果您希望有不同的元素和绘图表面大小,那么您也可以这样做

function scaleCoords(x, y) {
    x = x * DrawingSurfaceSize.width/ElementSize.width;
    y = y * DrawingSurfaceSize.height/ElementSize.height;

    return {x: x, y: y};
}

第二种方法的例子

于 2013-01-05T20:39:02.190 回答