Javascript 画布及其内容的动态调整
我是Javascript的初学者,请耐心听我说 基本上,我正在使用Javascript为网站制作一个沙盒绘图工具。这是使用画布完成的。我需要做的是能够动态调整画布的大小,但同时保持画布上的所有内容按比例缩放 我认为以前没有人问过这个问题。这看起来很简单,但我目前在画布上的所有对象都是以绝对坐标定义的。我还可以用鼠标事件来画东西。当我想放大画布时(比如说放大一倍)。里面的所有对象都不会被适当放大到一定的比例,鼠标坐标系也会被弄乱Javascript 画布及其内容的动态调整,javascript,html,canvas,Javascript,Html,Canvas,我是Javascript的初学者,请耐心听我说 基本上,我正在使用Javascript为网站制作一个沙盒绘图工具。这是使用画布完成的。我需要做的是能够动态调整画布的大小,但同时保持画布上的所有内容按比例缩放 我认为以前没有人问过这个问题。这看起来很简单,但我目前在画布上的所有对象都是以绝对坐标定义的。我还可以用鼠标事件来画东西。当我想放大画布时(比如说放大一倍)。里面的所有对象都不会被适当放大到一定的比例,鼠标坐标系也会被弄乱 我能想到的唯一解决方案是在我所有的绘图部件中添加一个比例因子,但这对
我能想到的唯一解决方案是在我所有的绘图部件中添加一个比例因子,但这对于很多代码来说是非常棘手的。有更好的方法吗?如果您不介意双尺寸画布上的锯齿,那么您可以简单地使用CSS将画布的大小增加一倍。然后将每个传入的mouseEvent坐标除以2 如果您不想在双尺寸画布上出现锯齿,那么:
- 将画布元素的大小加倍:
和画布。宽度*=2
这会自动擦除所有画布内容画布。高度*=2
- 放大画布:
上下文。缩放(2,2)
- 使用未更改的原始坐标重新绘制所有绘图零件。令人高兴的是:您不必缩放任何图形坐标——context.scale会自动为您这样做李>
- 将每个传入的mouseEvent坐标除以2
- 将画布元素的大小加倍:
和画布。宽度*=2
这会自动擦除所有画布内容画布。高度*=2
- 放大画布:
上下文。缩放(2,2)
- 使用未更改的原始坐标重新绘制所有绘图零件。令人高兴的是:您不必缩放任何图形坐标——context.scale会自动为您这样做李>
- 将每个传入的mouseEvent坐标除以2