我正在编写一个用于形状操作的应用程序,这样在创建简单形状后,用户可以通过将形状相互剪裁来创建更复杂的形状(即将两个圆圈组合成一个使用单个路径而不是组存储的图 8,或执行两个圆相交以创建“咬”标记),并且正在尝试决定要使用的图形库。
SVG 似乎可以处理我需要的 80% 的开箱即用功能(形状存储、移动、旋转、缩放)。问题是如果不在我自己的模块中重新创建 SVG 功能,另外 20%(使用剪裁来创建一组新的复杂多边形)似乎是不可能实现的(我必须将形状存储一次以在 SVG 中绘图,一次用于自己处理剪辑)。我对 SVG 的看法可能是错误的,但是通过阅读 Raphael 库(基于 SVG),它似乎只使用矩形处理剪辑,甚至剪辑也是暂时的(它只呈现部分形状,但仍存储整个形状移动剪切矩形后重新渲染)。也许我只是对 SVG 标准感到困惑,
因此,Canvas 似乎是一个更好的选择,因为它不会通过跟踪我已经必须跟踪以使我自己的剪辑实现工作的形状来引入额外的开销。不仅如此,我已经实现了可以移动、旋转和缩放的多边形类。但是,Canvas 还有一些其他问题(我必须实现自己的重绘方法,我确信它不会像利用 Chrome 和 Firefox 中特定于浏览器的框架的 SVG 那样高效;而且我会接受由 Raphael 等库免费处理的 IE 不兼容性)。
谢谢