svg 颜色_Day2 三种图表技术SVG、Canvas、WebGL 3D比较

1.什么是SVG?

描述:

  • 一种使用XML描述的2D图形的语言
  • SVG基于XML意味着,SVG DOM中的每个元素都是可用的,可以为某个元素附加Javascript事件处理器。
  • 在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

2.什么是canvas?

描述:

  • 通过Javascript来绘制2D图形。
  • 是逐像素进行渲染的。
  • 其位置发生改变,会重新进行绘制。

3.什么是WebGL 3D?

  • 说白了就是基于Canvas的3D框架
  • 主要用来做 3D 展示、动画、游戏。

因为前两项都是描述2D图形的,而WebGL是描述3d的,所以以下针对SVG和Canvas做比较。

3.有了Canvas为什么还要使用SVG

最重要的一点是SVG不依赖于终端设备的像素,可以随意放大缩小但是不会失真

继续:为什么SVG放大不会失真而Canvas却会变模糊呢?

因为SVG的渲染的原理是通过对图形的数学描述来绘图的,例如:以下哆啦A梦的头型的思路是,我先画一个贝塞尔函数,然后填充颜色。

而Canvas的渲染原理是通过对每个像素颜色的填充,最后组成图形,例如:以下马里奥的帽子我们可以看出,其实帽子的形状是由一个个像素填充出来的。

另外Canvas渲染出来的图叫位图,SVG渲染出来的图叫矢量图

8db3aead7cd698b7d8c6cb4f4f8c9b38.png

看到这里你肯定会觉得那直接所有图形都用SVG画不就行了,位图就可以直接淘汰了呀,但是SVG画的图也有缺点,以下针对两者的不同做一个对比。

4.两者的对比

b906f2bd15569eda25f39c677b8a927c.png

理解适用场景:

从以下这张微软开发社区公布的性能图中也可以看出,SVG在绘图面积较大,数据量较小的时候性能较好,渲染时间较短,而Canvas刚好相反。

b3fb1c23405f967d27b8ced8a4095f74.png

5.总结

Canvas和SVG两者的适用场景不同,开发者在使用是应根据具体的项目需求来选择相应的渲染方式。

最后附上一个SVG编译器帮大家更好的理解和使用SVG,可以直接复制代码编译运行

SVG 编辑器

创建

Rect Circle Ellipse Line

形状

请先创建图形

外观和变换

填充

描边

translateX translateY rotate scale

b1664de53ce4549c72679015489e66a2.png

代码效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值