出口KinteticJS绘制SVG?(Export KinteticJS drawing to SV

2019-09-16 13:57发布

是否有可能导出动力学JS对象SVG?

或解决方法是Kintetic JS的画布转换为SVG。

编辑:

最好是使用fabricJS ,因为它支持画布渲染SVG与面料对象工作时。

我接受Phrogz的答案,因为它也不会转化画布,而无需使用其他一些库,用于在画布上绘制SVG。

编辑2:好了,我搞砸了,Phrogz的图书馆围绕canvas元素的包装,所以你使用它的方法绘制在画布上(我认为这只是在画布上“等待”,并创建SVG路径)。 所以最好的解决办法是fabricJS肯定。

Answer 1:

最好的解决办法是使用Fabric.js !



Answer 2:

我已经创建文库的一个alpha版本 ,允许你延伸的HTML5画布背景信息,使得它可以跟踪所有矢量绘图命令和将它们存储在一个阵列SVG元素ctx.svgObjects上下文属性。

:你可以在这里看到活动的库http://phrogz.net/svg/HTML5CanvasRecordsSVG.html
该演示打开记录,绘制了几个形状HTML5的Canvas,然后追加“记录” SVG对象的SVG容器隔壁。

在一般的库:

  1. 通过跟踪当前上下文变换SVGMatrix对象。 (这是因为HTML5 API背景下,您可以设置当前变换到一个矩阵,但不会你当前矩阵。)它通过拦截来电喜欢做这个translate()rotate()并相应地更新矩阵。
  2. 截距beginPath()并创建一个新的SVG路径元件,然后拦截等进一步的命令moveTo()lineTo()以便添加的等效路径命令到SVG路径。
    • 注意:不是所有的路径命令支持,或者在写这篇文章的时间在图书馆里进行测试。
  3. 截距fill()stroke()添加当前SVG的副本<path>svgObjects阵列,设置当前变换矩阵,填充和中风样式。
    • 注意:不是所有的笔触样式( lineCaplineJoinmiterLimit )支持在写这篇文章的。
    • 注意:调用fill()后跟stroke()创建两个单独的SVG元素; 没有优化中风区分这种特殊情况下/填充,或改变调用之间的转换或路径。
  4. 截距fillRect()strokeRect()创建SVG <rect>元素。

更多的工作可以在这个库进行充实的所有命令(不只是路径的命令,而且还搞什么fillText() 但它不是我个人的需要,所以我并不倾向于花时间把它搭在了终点线。



Answer 3:

basicly可以在画布转换为Base64 PNG,然后把它放在SVG

也许这可以帮助你

http://svgkit.sourceforge.net/tests/canvas_tests.html



文章来源: Export KinteticJS drawing to SVG?