zrender icon indicating copy to clipboard operation
zrender copied to clipboard

SVG加载模块

Open pissang opened this issue 11 years ago • 8 comments

能够加载解析svg文件并且挂在一个根Group下面,解析出来的结果能够保持原先的层级结构,能够保持attributes和style里的样式,css里的样式暂时忽略。 脑补用法1:

svgLoader.load('sample.svg', opts).then(function(g) {
    zr.addGroup(g);
    zr.refresh();
});

脑补用法2:

// 是对上一种的封装,通过 zr 加载可以在加载完后自动刷新,就跟图片差不多了
// 第一个参数是 svg 的路径(也可以是svg dom节点?)
// 第二个参数是挂载的根节点, 如果为空则返回新创建的根节点
// 第三个是可能会有的一些可选参数
zr.loadSVG('sample.svg', rootGroup, opts);

几个问题

  • 需要一个http模块,放在zrender/tool 下?
  • 是否需要一个 promise 模块?
  • Group 模块从 shape 目录移出来放到一个 container 目录下?

pissang avatar Sep 03 '14 03:09 pissang

1、需要一个http模块,放在zrender/tool 下? 2、是否需要一个 promise 模块? http模块和promise模块都用外部依赖吧,e系内应该很多现成的,都放到lib里?把lib改名为dep?

3、Group 模块从 shape 目录移出来放到一个 container 目录下? container不太合适,这里面放的都是容器?这个目录的目标是什么?

kener avatar Sep 03 '14 06:09 kener

嗯我看下现成的。

以后都会放容器,原来和所有shape放一个目录下应该是没问题的,但是现在那个目录名字是shape,而且有个Base类,很容易误解这个Group是Base的子类(刚开始实现Group的时候也犹豫过是否从Base扩展,但是很多方法都不会用到所以放弃了)。现在把 Group 移出来主要是想强调这个和Base是同一层级的,而并不是一个shape。

pissang avatar Sep 03 '14 07:09 pissang

http我还是直接写个简单的,etpl 这样的,只是请求xml和json文件用。

promise 用 ecomfe/promise 不知道是否合适,不过这个可以先放着。

pissang avatar Sep 03 '14 08:09 pissang

svg加载放入根目录下的extension里作为一个插件,示例是doc/example.html

目前完成的:
  • 保留原始的层级关系
  • attributes和style里的绘制样式,样式的继承
  • transform属性的解析,支持translate, rotate, scale, transform, 不支持skew
  • defs的引用,目前支持gradient
  • 支持图形rect, circle, line, ellipse, polygon, polyline, pathtextimage稍后加入
tool目录下加入http模块
Group模块从shape目录移到src目录下

pissang avatar Sep 04 '14 03:09 pissang

9年了,这个功能完成了吗?并没有找到对应的演示文件

nanfb avatar Jul 07 '23 00:07 nanfb

@nanfb https://github.com/ecomfe/zrender/blob/master/src/tool/parseSVG.ts

pissang avatar Jul 15 '23 06:07 pissang

@nanfb https://github.com/ecomfe/zrender/blob/master/src/tool/parseSVG.ts

导出的方法是这个吗?parseXML,怪不得找不到,靴靴

nanfb avatar Jul 15 '23 06:07 nanfb

@nanfb https://github.com/ecomfe/zrender/blob/master/src/tool/parseSVG.ts

导出的方法是这个吗?parseXML,怪不得找不到,靴靴

这个方法对于defs中引入的样式不支持,只能显示标签中的属性,

nanfb avatar Jul 15 '23 14:07 nanfb