【发布时间】:2015-09-27 19:32:47
【问题描述】:
不知道有没有办法解决。
我有一个画布元素,我想改变它的宽度。我知道这很容易,但是当宽度改变时,当宽度变窄/变宽时,绘图中的线条也会变细/变粗。
我可能可以通过重绘图像并使用缩放和 lineWidth 等来解决这个问题,但我不想每次宽度变化时都重新绘制(我正在使用 setInterval 更改宽度,所以我不t 认为每 40-50 毫秒或更少毫秒重绘一次是合理/可行的解决方案)。
任何人都可以想办法解决这个问题吗?
简单解释一下,我有:
ctx.beginPath()
ctx.strokeStyle="#000000";
ctx.lineWidth=1;
ctx.strokeRect(10, 10, 400, 400);
因此,当画布的宽度发生变化时,lineWidth 变得小于 1 个像素,直到它变得“破碎”并消失的地步。
在写这个问题时,我越来越认为唯一的解决方案是重绘图像,但请告诉我你的想法。
添加*** 我正在用它来改变宽度,希望它有意义:
repeater = setInterval(function() {
$(".action").css("width", originalWidth - borderRight - borderLeft + (mouseX - clickX));
}, 40);
我检查鼠标何时位于画布的右边缘,然后在“mousedown”上 originalWidth、borderRight、borderLeft、mouseX 和 clickX 设置在中继器之外,因此当鼠标左右移动时,宽度会增加/减少。当然,间隔在“mouseup”上被清除。
谢谢,迈克
【问题讨论】:
-
如何改变画布的宽度?这样做有正确的方法和错误的方法。
-
好的,公平的评论!我正在使用 setInterval 并使用 jquery .css("width", newWidth) 更改宽度。这是我已经完成的自定义调整大小功能。我会更新我的问题,希望能解释得更好。
标签: javascript html canvas