我正在画布上构建一个应用程序,它由一个简单的 DOM 组成,每次鼠标移动都会重绘(是的,这是必要的),对于性能问题,并不是每个部分都只重绘需要的部分。
该应用程序运行良好,但我想添加缩放功能,我看到它的方式,它可以通过三种不同的方式完成:
1 - 每次用户放大或缩小时,每个 DOM 元素都会重新计算(位置和大小) - 它可能存在精度问题并且它不是一个很好的抽象
2 - 画布具有分辨率属性(即,当用户缩小分辨率时,分辨率可能从 1 变为 .75) - 每次重绘时都需要进行计算
3 - 使用内置的 translate() 和 scale() 方法 - 可能是最优雅和最快的解决方案,但是它根本不直观,可能很难理解我或其他人稍后是如何完成的(这些方法适用于整个画布,首先您将在画布上进行翻译和缩放,然后您绘制的所有内容都会“神奇地”翻译和缩放)
哪一个是最好的,或者还有其他我没有想到的可能性?