【发布时间】:2021-04-06 17:57:45
【问题描述】:
当用户调整浏览器窗口的大小时,我正在尝试调整画布图表的大小。直接更改它的问题,或者我发现......是图像在调整大小时消失了。这里有一些截图可以帮助你理解我的问题。
这是调整大小时的图表。 (不针对 DOM 元素)
- 我发现图表在右侧溢出。
图表正在调整大小并以画布宽度为目标。
- 如您所见,图表消失了。
let canvas = document.getElementById('canvas');
this.canvas.width = ${
event.target.innerWidth - (window.innerWidth / 100) * 2
};
请告诉我动态调整画布图表大小的选项。谢谢!
附:我正在为这个特定项目使用 AngularJs。
2020 年 12 月 30 日更新
发现图表消失的明显原因是画布基于源自设定高度/宽度的坐标。所以解决方案是在画布调整大小时重新映射笔触/填充。
新挑战:
- 使用 clearRect (0, 0, width, height) 不会清除画布。重新映射会导致图表在彼此之上的无限映射。如下图所示。
【问题讨论】:
-
如果不是
this.canvas.width = `${event.target.innerWidth - (window.innerWidth / 100) * 2}px`;请使用[<>]sn-p编辑器创建minimal reproducible example -
宽度实际上默认为像素,所以除非我需要特定的测量单位,否则我通常会保留它。关于代码,我不能分享它背后的功能,因为它是公司所有的。图片是我能做的最好的。主要问题是动态调整图表大小时图表本身会消失。
标签: javascript html css angularjs canvas