浅谈Canvas与SVG_canvas svg 缩放 性能-程序员宅基地

技术标签: Web  SVG  Canvas  

1SVG

SVG 可缩放矢量图形(Scalable Vector Graphics),是一种使用可扩展标记语言(XML)描述2D图形的语言。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。

SVG基于XML,意味着SVG DOM中的每个元素都是可用的,可以为某个元素附加 JavaScript 事件处理器。

在SVG中,每个被绘制的图形均被视为对象,如果SVG对象的属性发生变化,那么浏览器能够自动重现图形。也就是说,SVG绘图很容易编辑,只需要增加或移除相应的元素就可以了。

SVG是基于矢量的,它能够很好的处理图形大小的改变。SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。

SVG功能更完善,适合静态图片展示,高保真文档查看和打印的应用场景。

 

2、Canvas

Canvas 通过 JavaScript 来绘制2D图形(动态生成)。

Canvas 是逐像素进行渲染的。

在Canvas中,一旦图形被绘制完成,就不会继续得到浏览器的关注,如果其位置发生变化,整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

Canvas是基于位图的,它不能够改变大小,只能缩放显示。

Canvas提供的功能更原始,适合像素处理,动态渲染和大数据量绘制。

 

3、Canvas与SVG

Canvas

SVG

位图

矢量图

依赖分辨率

不依赖分辨率

逐像素进行渲染

逐元素(DOM元素)进行渲染

通过JavaScript 绘制图形

基于XML,用文本格式的描述性语言来描述图像内容

不支持事件处理器。Canvas输出的是一整幅画布,能够以 .png 或 .jpg 格式保存结果图像

支持事件处理器。SVG绘制出的每个图形元素都是独立的DOM节点,能够方便的绑定事件

不能够改变大小,只能缩放显示

能够很好的处理图形大小的改变

放大或缩小时图形质量会有所损失

放大或缩小时图形质量不会有所损失

适合像素处理,动态渲染和大数据量绘制,最适合图像密集型的游戏(频繁重绘对象)

适合静态图片展示,高保真文档查看和打印的应用场景,不适合游戏应用

如果图形位置发生变化,整个场景需要重新绘制,包括任何或许已被图形覆盖的对象

如果对象属性发生变化,浏览器能自动重现图形。也就是说,SVG绘图很容易编辑,只需要增加或移除相应的元素即可


4、Canvas与SVG绘制地图的选择

当绘制的对象数目较少时,Canvas和SVG的性能差不多,但是当数量增加之后,canvas的性能要远远优于SVG。

当需要动态渲染地图,频繁重绘时,选择Canvas更好。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhouziyu2011/article/details/69063848

智能推荐

Java基于SpringBoot的药店管理系统(亮点:Echarts数据可视化)_基于售药机的可视化控制系统-程序员宅基地

文章浏览阅读267次,点赞6次,收藏12次。今天带来的是基于java springboot的药店药品管理系统,医药药品行业是关乎民生的行业, 一个不小心很可能造成严重的后果。因此, 为了让药店管理日常业务能够更加快速、高效、准确的运转, 设计一个适合的药店管理系统对一家药店来说是十分重要的。_基于售药机的可视化控制系统

学习vue_vue new set-程序员宅基地

文章浏览阅读329次。1.MVVM模式 2.CMD命令操作3.CDN4.ES6-键值对5.模板字符串 6.生命周期钩子7.数组侦听 8.事件对象属性9.事件修饰符 10.v-model修饰符11.key属性的作用 12.v-if与v-show的区别13. v-for与v-if一同使用的注意事项14. 父子组件之间传递数据的方法 子组件向父组件传递数据 +父组件向子组件传递数据 15.单页应用(SPA) _vue new set

java/jsp/ssm校园活动比赛管理系统设计与实现【2024年毕设】-程序员宅基地

文章浏览阅读138次。springboot基于SpringBoot开发的烘焙店线上点单小程序。springboot基于SpringBoot的抗癌卫士平台的设计与实现。springboot基于Springboot的养老院管理系统。springboot基于springboot的宿舍管理系统。springboot基于协同过滤算法的商品推荐系统。springboot微信小程序画者论坛的设计与实现。springboot基于微服务的闪聚支付系统设计。ssm基于Android的个性化推荐阅读系统。springboot基于微信小程序的美肤网。

L1-043 阅览室 (20 分)-程序员宅基地

文章浏览阅读79次。天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。输入格式:输入在第一行给

warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失_vs2019 把文件保存成unicode-程序员宅基地

文章浏览阅读655次。vs2019 保存的时候选择 Unicode(UTF-8 带签名)- 代码页65001,不能选择Unicode(UTF-8 无签名)- 代码页65001参考:支持中文 的方法_vs2019 把文件保存成unicode

计算机如何区分指令和数据?-程序员宅基地

文章浏览阅读1.1k次。2、通过地址来源区分,由PC(程序计数器)提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。来区分指令和数据,即在取指令阶段(或取指微程序)取出的为指令,在执行指令阶段(或相应微程序)取出的即为数据。这个是计算机组成原理里面的基础知识,2023年下半年软考软件设计师的选择题中考到过。我们知道,指令和数据都存放在内存里面,那么计算机是如何知道是取指令还是取数据呢?一般来说,记住是通过不同的。_计算机如何区分指令和数据

随便推点

基于JMP的神经网络设计案例分析_jmp神经网络分析-程序员宅基地

文章浏览阅读4.7k次,点赞4次,收藏17次。基于JMP的神经网络设计案例分析 摘 要:本文利用JMP对一个复杂多项式进行拟合,从实验设计产生样本数据、神经网络设计、训练样本技巧、到结果分析进行详细阐述。使读者能够使用JMP软件的神经网络分析工具,解决实际问题。关键词:神经网络,JMP,数据分析1.引言 当前人工智能已经应用在很多领域,辅助人类解决了很多问题,神经网络作为人工智能的基础理论,近些年也得到飞速发展,也_jmp神经网络分析

如何使用pycharm将github上的代码同步到本地_github复制的代码pycharm可以直接用吗-程序员宅基地

文章浏览阅读1.8k次。1、首先确定你安装了git.exe,具体的话是在pycharm里面的settings-version control2、打开pycharm,新建版本使用git3、从github上复制代码链接4、填入相关内容点击clone即可_github复制的代码pycharm可以直接用吗

html5边框像素,HTML 移动端,给元素添加0.5px的边框-程序员宅基地

文章浏览阅读392次。在浏览器端1px线看起来的确很细,但一旦放在手机上,就显得很粗,原因如下:在移动端,1px 的直线在物理屏幕上通常会显示成 2px(甚至更粗)。这是因为手机屏幕的物理分辨率(硬件支持的)通常是其逻辑分辨率(软件支持的)的数倍。以 iPhone 6 为例,其逻辑分辨率为 667×375 ,物理分辨率为 1334x750 。这意味着物理屏幕使用 2x2 个像素点显示 1 像素的内容。换言之,如果我们希..._html5 13pro max 0.5px显示

【华为机试真题 Python实现】字符串筛选排序_python提取字符串中小写字母然后排序-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏15次。输入一个由 n 个大小写字母组成的字符串,按照 Ascii 码值从小到大的排序规则,查找字符串中第 k 个最小 ascii 码值的字母(k>=1),输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为 0)。k 如果大于字符串长度,则输出最大 ascii 值的字母所在字符串的位置索引,如果有重复的字母,则输出字母的最小位置索引。..._python提取字符串中小写字母然后排序

【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)_alexnet cifar10-程序员宅基地

文章浏览阅读2.1k次,点赞28次,收藏31次。本文的写作目的主要有以下3点:1.介绍经典卷积神经元网络——AlexNet;2.基于AlexNet进行改造,基于PyTorch进行编码;3.使用批量训练的方法,训练Cifar10数据集。_alexnet cifar10

jQuery相册插件(开源下载)-程序员宅基地

文章浏览阅读166次。一,导言  上次 “不定义JQuery插件,不要说会JQuery” 的博客写的肤浅,漏洞百出,而且最重要的是从理论上说如何定义一个jQuery插件,没有实质性的写一个jQuery插件出来,这未免是纸上谈兵。在两周前我就琢磨着写一个什么插件,最后决定写一个jQuery相册插件比较合适,jQuery相册插件虽然在google上一搜,能搜索出成百上千的产品,比如下边列表中谈到的:   60+ U..._jquery 相册插件

推荐文章

热门文章

相关标签