SVG 与 HTML5 Canvas 中的图表

2023-12-20

我想开始一个项目,在该项目中,我需要绘制由用线条连接的圆角矩形组成的图表,以及单击某些元素时的 JavaScript 操作。这需要在所有现代浏览器中工作。

SVG 和 HTML5 Canvas 似乎都可以做到这一点,所以我想知道什么是最好的。

另外,我不想重新发明轮子,所以如果有库可以做这样的事情,我想知道;我查看了 Raphaël 和其他一些 JavaScript 绘图库,但它们没有提供我需要的所有功能。 Google的API中有这样一个工具,但是非常有限。


使用 SVG 因为——作为保留模式绘图 API — 您可以将事件侦听器直接附加到特定元素,并更改特定元素的属性并使页面神奇地更新。此外,作为基于矢量的格式,它与分辨率无关。

相比之下,HTML5 Canvas 是non-retained-mode (aka 立即模式) 绘图API;您绘制的每个像素都与画布上的所有其他像素混合,没有原始形状的概念。此外,作为基于光栅的格式,您需要做一些额外的工作才能使绘图命令适应不同的显示尺寸。

一般来说,当且仅当您需要时,您才应该使用 Canvas:

  1. 直接设置像素(例如模糊、闪光效果),或
  2. 直接获取像素(例如读取用户的绘图以另存为 PNG,对图像的部分进行采样以检测视觉重叠 http://phrogz.net/tmp/canvas_shape_edge_arrows.html), or
  3. massive不会移动太多或跟踪单个事件的“对象”数量(SVG 重绘数千个对象可能会很慢)。

另请注意,您不必只选择其中之一。您可以将 SVG 绘制到画布上。您可以在 SVG 中包含位图(图像)。您甚至可以通过以下方式在 SVG 中包含 HTML5 Canvas<foreignElement>。您可以拥有一个包含多个分层画布和具有透明背景的 SVG 元素的 HTML 页面,并混合每个元素的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SVG 与 HTML5 Canvas 中的图表 的相关文章

  • 使内联块在溢出时缩小到内容

    I have an inline block container with several other inline block elements like so The container is the blue background t
  • 用另一个文本替换所选内容

    我正在尝试用其他文本替换所选文本 考虑以下是文本行 世界你好 早上好 你好世界 早上好 如果我选择第二个morning文本 我想用晚上替换早上的文本 因此输出需要如下所示 世界你好 早上好 你好世界 晚安 我尝试了替换功能 但它正在替换第一
  • 如何使用 webRTC 禁用系统音频增强?

    在不同的系统 Windows Android 等 上有一些 内置 音频增强功能 例如 AEC 自动回声消除 NR 降噪 和自动增益控制 每个人都可以以任意组合关闭或打开这些功能 某些浏览器上还有音频增强功能 我知道 Chrome 和 Fir
  • 如何缩短静态 HTML 网站的加载时间?

    我们正在开发一个网站 注意到 GIF 图像 100kb 200kb 加载速度非常慢 该网站是一个带有 CSS HTML 的静态网站 有谁能指出为什么图像加载缓慢 使用 JPG 会提高性能吗 以下是该图像的 HTML 代码 div img s
  • 适用于所有浏览器的 Center HTML 5 音频播放器

    我尝试过这样的代码 div style margin 0 auto div
  • 如何仅使用

    我有下面使用表标签的代码 但我想要使用 div 标签的同一张表 我已经尝试过但无法做到相同 下面我也附上了图像 请帮助我使用 div 标签创建相同的表
  • 如何在不使用 Flexbox 的情况下水平对齐元素?

    有没有一种方法可以在不使用的情况下将 Web 组件彼此相邻对齐Flexbox 我知道它是一个很棒的工具 但不幸的是它不适用于 IE 9 或 10 我希望链接内的文本显示在图像旁边 JSFiddle 显示了工作代码 但是使用 FlexBox
  • asp.net aspx 的标记验证

    我使用 asp net 创建了一个网站 在互联网上启动网站之前 我想对我使用的网络表单进行验证测试 我已经知道如何通过 W3C 标记验证服务来验证 HTML 静态网站 是否可以通过上传文件在 Webforms aspx 上执行相同的验证方法
  • Firefox 在构建页面时使白色“闪烁”

    我一直致力于构建一个带有 Flash 幻灯片组件的网站 但我有点困惑 当我在 Firefox 3 6 8 中查看该页面时 它似乎首先下载该页面的内容 并在下载幻灯片时发出白色 闪烁 但是当我在 Safari 中查看页面时 它似乎首先构建页面
  • 子 div 超出父 div 范围

    目前我正在使用 CSS 和 HTML 等设计一个网站 但是我遇到了一个问题 当我向子级添加浮动时 我的子级 div 超出了父级 div 的范围 该网站位于此处我的网页设计 http 7sisters in test mintbite 更加详
  • 使用 jQuery 禁用 CSS 继承

    有没有办法使用 jQuery 或通用 javascript 在块级别禁用 CSS 继承 例如 如果我通过 javascript 拉入外部资源 例如 Pastie org 它们将拥有自己的 CSS 而我的 CSS 会覆盖它们 我想将嵌入代码放
  • 克隆表行

    我怎样才能使用javascript 我假设 来克隆一个表格行 就像下图所示的那样 您可以将现场活动连接到所有按钮 例如 如果您给他们一类克隆 则以下内容将起作用 input clone live click function put jqu
  • Javascript 字符串/整数比较

    我在 HTML 中存储一些客户端参数 然后需要将它们作为整数进行比较 不幸的是我遇到了一个我无法解释的严重错误 该错误似乎是我的 JS 将参数读取为字符串而不是整数 导致我的整数比较失败 我生成了一个错误的小例子 我也无法解释 运行时以下返
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • 强制浏览器打开文件而不是提示下载

    在 Firefox 和 Chrome 中单击 PDF 链接时 有时会打开该文件以在浏览器中查看 有时会提示 另存为 对话框 如果我想强制链接始终提示下载 我可以使用downloadHTML5 属性 然而 我想做相反的事情 IE 强制链接始终
  • 将新数据添加到 d3 Streamgraph 时的转换

    我使用d3绘制了一个与官方示例非常相似的流图http bl ocks org mbostock 4060954 http bl ocks org mbostock 4060954 唯一的区别是我如何用新数据更新它 我不仅想要垂直 y 值 过
  • 通过标记或JS强制下载

    假设我在 CDN 来自 Rackspace 的云文件 上有一个文件 以及一个包含该文件链接的静态 html 页面 有什么方法可以强制下载此文件 以防止它在浏览器中打开 例如 mp3 我们可以让我们的服务器读取该文件并将相应的标头设置为 he
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • CSS 中默认的 SVG 单位是什么?

    我想转换一个transformSVG 属性转换为 CSStransform 这里是
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将

随机推荐

  • Etsy API 图片上传错误

    我有一个 oauth 连接 它可以很好地处理所有其他请求 但有一个 上传列表图像 这是代码 connection this gt getEtsyConnection imageApiUrl https openapi etsy com v2
  • 在 R 中使用多个更改参数应用函数

    我想对引用 R 数据框中的多列的所有行应用一个函数 例如 如果我有一个名为 data 的数据框 其中包含三个变量 var1 var2 和 var3 并且我想对每一行应用一个函数 myfunc lt function var1 var2 va
  • 获取音频文件大小而不导出

    我正在开发一个应用程序 用于导出存储在 iPod 库中的音频文件 但我应该在导出和上传之前验证文件大小 服务器有固定的最大上传大小 我知道导出文件后 大小不会相同 有什么方法可以估计新大小 主要问题 我可以在导出之前知道原始文件大小 使用
  • Python:为什么需要 functools.partial?

    部分应用很酷 有什么功能functools partial https docs python org 3 library functools html functools partial提供你无法通过 lambdas 的报价 gt gt
  • 使用 ColdFusion 的 reCaptcha v3

    我正在尝试将 reCaptcha v3 集成到 ColdFusion 站点 我对 CF 语法不太感兴趣 目前我似乎从服务器端的验证请求中没有得到任何返回 任何人都可以看到任何明显错误和 或请指出我正确的方向吗 客户端
  • 从firebase存储Xamarin获取图像下载url

    我试图从上传到 firebase 存储的照片中获取图像 url 以便我可以将图像的引用存储在另一个表中 这将使我能够在整个应用程序的其他位置显示图像 我目前有 private void UploadPhoto if filePAth nul
  • 如何使用 Python 从 Windows 7 中迭代连接的 iPhone 上的照片?

    当我将 iPhone 连接到 Windows 7 系统时 Windows 资源管理器会打开 DCIM 内容的虚拟文件夹 我可以通过 Pywin32 218 访问 shell 库接口 如下所述 我可以在 python 中使用库抽象吗 http
  • 需要配置的打字稿

    我正在构建一个 Web 应用程序 其中的开发不是基于 TypeScript 构建的 但是该应用程序具有我想要使用插件样式进行的集成点 这就是使用 TypeScript 的地方 TypeScript 代码位于第二个解决方案中 我将 js 文件
  • git status 报告新克隆的存储库中修改的文件

    Solved 远程存储库似乎包含两个名称相同的文件 除了第一个字母之外 这导致我的系统上的文件被覆盖 从而导致以下问题 Update 看起来它与换行符无关 但我还找不到解释 事情是这样的 git status报告FileStartingWi
  • 获取在 Windows 上构建轮错误 Pygame 的要求

    我正在尝试使用以下命令安装 Pygame pip install pygame我得到这个结果 pip 安装 pygame 收集pygame 使用缓存的 pygame 2 4 0 tar gz 13 2 MB 安装构建依赖项 完成 获取构建轮
  • 服务结构具有 100 万个键的可靠字典性能

    我正在使用包含约 100 万个键的可靠字典来评估 Service Fabric 的性能 我得到的结果相当令人失望 所以我想检查我的代码或我的期望是否错误 我有一本初始化的字典dict await stateManager GetOrAddA
  • jQuery.post 刷新我的页面?

    我的页面上有以下带有表单的代码 但是当我点击提交时 我的页面似乎刷新了 form
  • js如何将objectName打印到控制台

    使用 webdev 工具控制台时 如果输入浏览器对象 则会返回控制台 gt console Console gt console object Console gt console log console undefined gt Cons
  • rm 无法从脚本中通过通配符删除文件,但可以在 shell 提示符下工作

    我在 Linux shell 脚本中遇到了一个非常愚蠢的问题 我想删除目录中扩展名为 bz2 的所有文件 在我调用的脚本中 rm archivedir bz2 其中 archivedir 是目录路径 应该很简单 不是吗 不知何故 它因以下错
  • [iOS][AWS Cognito] 已弃用“登录”:使用“AWSIdentityProviderManager”

    我一直在尝试使用 Amazon Cognito 在 iOS 上使用 Facebook 和 Twitter 对用户进行身份验证 我无法实施 因为官方文件太旧了 这是我的代码 NSString token FBSDKAccessToken cu
  • 使用 Python 和 mySQL 进行动态 SQL 查询

    我有多个表 这些表在网格中的值更改后更新 这些表并不总是具有相同的键或列 因此我无法明确命名列或格式 唯一相同的是键所在的列 我知道我目前这样做的方式是不正确的 并且使我容易受到注入攻击 我还遇到了一个问题 其中某些值包含在 SQL 语句中
  • jQuery 滑块适用于 div 元素而不仅仅是图像

    我已经在我正在处理的页面底部为一些 建议项目 创建了 div 和容器 希望它成为一个滑块 您可以在其中左右单击以查看更多内容 但是我见过的所有 jQuery 滑块都只适用于图像 轮播 对于这种情况 人们可以向我推荐一些滑块 因为它不仅仅是图
  • MySQL 从多列中选择并计算值

    我正在尝试创建一个 mysql 选择查询 该查询根据其他两个字段计算一个值 这是我的查询 SELECT request id unit cost quantity AS claim value FROM xx non part usage
  • 如何判断 Clojure 中的 dosync 是否正在更新引用?

    我需要对参考进行一些更新 但我想选择在参考不大量使用时执行更新的时间 有没有一种方法可以以编程方式判断引用何时处于事务中 你可以add watch http clojure github com clojure clojure core a
  • SVG 与 HTML5 Canvas 中的图表

    我想开始一个项目 在该项目中 我需要绘制由用线条连接的圆角矩形组成的图表 以及单击某些元素时的 JavaScript 操作 这需要在所有现代浏览器中工作 SVG 和 HTML5 Canvas 似乎都可以做到这一点 所以我想知道什么是最好的