学习笔记——SVG.js中形状元素的创建及其相关方法

2023-11-20

CreateElement

1)创建svg元素

在svg.js中,每个元素都是一个对象,可以通过构造它来创建:

import { Rect } from "@svgdotjs/svg.js"
var rect = new Rect().size(100, 100).addTo(draw)
// or to reuse an existing node
var rect = new Rect(node).size(100, 100)

或者通过在容器上使用构造函数:

var rect = draw.rect(100, 100)

2)使用属性创建svg元素

svg.js允许通过attr()方法或调用move()等专用方法来更改属性。然而,在构造时直接传递属性通常更容易:

var rect = new Rect({width: 100, height: 100}).addTo(draw)
// or
var rect = draw.rect({width: 100, height: 100})

这是构造后调用attr()的简写。

2.Dom

SVG.Dom是SVG.js创建的所有Dom元素的基本原型。它提供了简单的Dom功能,如attr(),并可用于HTML元素。
对于SVG.js未描述的所有元素,SVG.Dom类也很有用。

1)element()

SVG.Dom类可以用任何元素上的element()方法实例化:

var element = draw.element('title')

作为第一个参数传递的字符串值是应该生成的节点名。
可选地,可以通过将属性作为第二个参数传递来直接添加属性:

var element = deraw.element('title', {id: 'myId'})

2)element.word()

SVG.Dom实例提供了添加纯文本的附加方法:

var element = draw.element('title').words('This is a title.')

3.Rect

1)rect(width, height)

rect有两个参数,宽度和高度:

var rect = draw.rect(100, 100)

2)rect.radius(number/(numberx, numbery))

rect可以设置圆角

rect.radius(10)
rect.radius(10, 20)

4.Circle

1)circle(diameter)

circle唯一需要的参数是直径:

var circle = draw.circle(100)

2)circle.radius(number)

rect可以设置半径

circle.radius(75)

5.Ellipse

1)ellipse(diameter)

ellipse有两个参数,宽度和高度:

var ellipse = draw.ellipse(100, 200)

2)ellipse.radius(number)

椭圆也可以通过其半径重新定义:

ellipse.radius(75)

6.Line

1)line(Ax, Ay, Bx, By)

绘制一条从A点到B点的线

var line = draw.line(100, 100, 100, 150).stroke({ width: 10, color: 'red' })

可以通过四种方式创建线元素。

2)line.array()

引用SVG.PointArray实例。该方法仅供内部使用:

line.array()

3)line.plot()

使用plot()方法更新行:

line.plot(50, 30, 100, 150)

或者,它也接受点字符串:

line.plot('0,0 100,150')

或点阵列:

line.plot([[0, 0], [100, 150]])

或SVG.PointArray的实例:

var array = new SVG.PointArray([[0, 0], [100, 150]])
line.plot(array)

plot()方法也可以设置动画:

line.animate(3000).plot([[200, 200], [100, 150]])

7.Polyline

1)polyline()

多线段元素定义一组连接的直线段。通常,多线段元素定义开发形状。

var polyline = draw.polyline('0,0 100,50 50,100').fill('none').stroke({ width: 1 })

多段线字符串由逗号或空格分隔的点列表组成。
例如:x,y x,y x,y 或 x y x y x y 或 x,y,x,y,x,y
作为替代方案,一组点也可以工作:

var polyline = draw.polyline([[0,0], [100,50], [50,100]])

甚至是首选的点的平面阵列:

var polyline = draw.polyline([0,0, 100,50, 50,100])

2)polyline.array()

引用SVG.PointArray实例。该方法仅供内部使用:

polyline.array()

3)polyline.clear()

解析给定的点数据时,将缓存结果。此方法清除缓存。

polyline.clear()

4)polyline.plot()

可以使用plot()方法更新多段线:

polyline.plot([[0,0], [100,50], [50,100], [150,50], [200,50]])

plot()方法也可以设置动画:

polyline.animate(3000).plot([[0,0], [100,50], [50,100], [150,50], [200,50], [250,100], [300,50], [350,50]])

8.Polygon

1)polygon()

与多段线元素不同,多边形元素定义由一组连接的直线段组成的闭合形状:

var polygon = draw.polygon('0,0 100,50 50,100').fill('#000').stroke({ width: 1 })

多边形字符串或数组与多段线字符串完全相同。无需关闭形状,因为第一个点和最后一个点将自动连接。

2)polygon.array()

引用SVG.PointArray实例。该方法仅供内部使用:

polygon.array()

3)polygon.clear()

解析给定的点数据时,将缓存结果。此方法清除缓存。

polygon.clear()

4)polygon.plot()

可以使用plot()方法更新多边形:

polygon.plot([[0,0], [100,50], [50,100], [150,50], [200,50]])

plot()方法也可以设置动画:

polygon.animate(3000).plot([[0,0], [100,50], [50,100], [150,50], [200,50], [250,100], [300,50], [350,50]])

9.Path()

1)path()

路径字符串类似于多边形字符串,但为了支持曲线,路径字符串要复杂得多:

draw.path('M0 0 H50 A20 20 0 1 0 100 50 v25 C50 125 0 85 0 85 z')

有关路径数据字符串的详细信息,请参阅有关路径数据的SVG文档

2)path.array()

引用SVG.PointArray实例。该方法仅供内部使用:

path.array()

3)path.clear()

解析给定的点数据时,将缓存结果。此方法清除缓存。

path.clear()

4)path.length()

获取路径元素的总长度:

var length = path.length()

5)path.pointAt()

在给定长度的路径上获取点:

var point = path.pointAt(105)

6)path.plot()

可以使用plot()方法更新路径:

path.plot('M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80')

plot()方法也可以设置动画:

path.animate(2000).plot('M10 80 C 40 150, 65 150, 95 80 S 150 10, 180 80').loop(true, true)

对于合并到SVG.js中的路径,只有基本的支持,这意味着只有具有相同命令(M、C、S等)的路径才可以设置动画。

7)path.text()

可以使用text()方法创建一个文本元素,其中文本路径链接到当前路径:

var textpath = path.text('SVG.js rocks!')

视频讲解

视频讲解

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

学习笔记——SVG.js中形状元素的创建及其相关方法 的相关文章

  • 更改样式表 JavaScript

    我得到了这个 HTML 代码
  • 为什么 lodash 将我的数组转换为对象?

    我是 lodash 的新手 创建了一个函数 该函数从值为 null 或空白的对象中删除键 但是当我传递包含某些部分作为数组的对象时 它会删除数组并将其转换为对象 下面是我尝试过的代码 mixin removeFalsies this rem
  • 从 JavaScript 重新启动动画 GIF,无需重新加载图像

    我正在使用动画 GIF 创建动画幻灯片 我正在从一个动画淡入淡出到下一个动画 问题是 我发现确保 GIF 从第一帧开始动画的唯一方法是每次显示时重新加载它 每个 GIF 大约 200KB 这对于连续幻灯片播放来说带宽太大了 这是我当前的代码
  • Javascript 函数指针,以参数作为函数中的参数

    不确定标题的措辞是否正确 或者是否有更好的表达方式 但我认为还可以 无论如何 到目前为止我了解以下内容 a b a b c foo 其中 foo 是在其他地方定义的函数 不接受任何参数 只会导致函数 a b 使用上述参数运行 然后可以在函数
  • 在 d3 中应用转换时出现错误

    我正在尝试对我在 d3 中设计的条形图应用一些过渡效果 这是我的代码 svg selectAll bar data data enter append g attr class bar append rect attr rx barRadi
  • ECMAScript 6 类中的 getter 和 setter 有何用途?

    我对 ECMAScript 6 类中 getter 和 setter 的意义感到困惑 什么目的 下面是我参考的一个例子 class Employee constructor name this name name doWork return
  • 使用 jQuery live() 初始化插件?

    使用 jQuery 在特定类的所有当前和未来元素上自动初始化插件的最佳方法是什么 例如 假设我想要全部
  • jQuery 在附加元素后立即返回 div 元素的高度 0

    我有一个浮动 div 最初没有内容 我使用 jQuery 将一组元素附加到 div 然后立即调用原始 div 的 height 方法 我添加的元素在样式表中具有定义的最小高度 而浮动 div 则没有 问题是 当我在原始 div 上调用 he
  • 如何将 vue3-openlayers 插件添加到 nuxt

    我有以下 main ts 文件Vue3 https v3 vuejs org import createApp from vue import App from App vue How to do this in nuxt3 import
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • es6-module 默认导出导入为未定义

    我不确定我在这里缺少什么 我正在使用 jspm 和 es6 module loader 开发一个项目 我有一个模块定义如下 import hooks from hooks import api from api import tools f
  • React Native 中 fontAwesome 图标的圆形轮廓

    我想使用 fontAwesome 图标 使其位于圆圈的中间 我想将它用作一个图标项 我读到我们可以将它与圆形图标一起使用并将其放置在其中 但我无法使其工作 import IconFA from react native vector ico
  • FileReader 在 Ionic 2 中未触发 onloadend

    我正在尝试使用 cordova file plugin 读取本地文件 目前我可以读取本地目录的内容并选择单个文件 但我在获取文件内容时遇到问题 这是我的函数 从列表中选择文件后单击按钮即可调用该函数 import window resolv
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • 检查是否安装了 Google Analytics 或 Universal Analytics?

    我正在尝试通过 JavaScript 来确定是否加载了 Google Analytics 或 Universal Analytics 一些客户仍在使用旧的 Google Analytics 我们希望推出一个收集数据的 JavaScript
  • 跟踪预防阻止了对 https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js 存储的访问

    大约一年半前 我使用 OfficeJS API 编写了一个 Excel 加载项 它一直工作到大约两周前 Excel 似乎已经进行了更新 现在我可以右键单击任务窗格并查看开发工具 而以前我无法做到这一点 并且必须运行外部 MS Edge 开发
  • 分配函数后如何删除 onmouseout 事件?

    我有一个问题 我正在为 onmouseout 事件分配一个函数 但运行该事件后 我需要将其删除 将非常感谢您的帮助 这取决于你的代码 如果你用 d3 这样做 那么你可以说 在 onmouseout 事件函数中 element on mous
  • 反转比例函数

    这对我来说很有趣 看下面的D3代码 var scale d3 scale linear domain 100 500 range 10 350 scale 100 Returns 10 scale 300 Returns 180 scale
  • 单击 html 中的按钮后如何从 javascript 函数写入文件

    我正在尝试编写真正基本的代码 在 html 文件上按下按钮后 通过 JavaScript 函数在本地写入 txt 文件 这不可能吗 我可以仅使用 javascript 文件写入文件 但在尝试同时使用两者时则不能
  • 了解客户端文件的对象 URL 以及如何释放内存

    我在用createObjectURL获取本地图像文件的引用 URL 当我完成文件 图像后 我打电话revokeObjectURL释放该内存 一切对我来说都很好 但我只是想确保我释放了我能释放的所有内存 我检查后出现了我的担忧chrome b

随机推荐

  • 如何在linux系统下创建空白文本.txt文件

    如何在linux系统下创建空白文本 txt文件 跳转到要新建文本的目录下 打开终端 输入命令 最后 跳转到要新建文本的目录下 可利用cd命令在终端跳转 或者直接到要新建文件的目录文件夹中 打开终端 输入命令 touch 文本名 txt 例如
  • MySQL之索引

    数据库中的索引与书的目录相似 表中的数据类似于书的内容 书的目录有助于读者快速地找到书中相关的内容 数据库的索引有助于加快数据检索速度 目前大部分MySQL索引都是以B 树 BTREE 方式存储的 BTREE方式构建了包含多个节点的一棵树
  • pyqt点击按钮执行脚本

    class NineGridApp QWidget def init self super init self initUI def initUI self self setWindowTitle 测试常见的操作 self setGeome
  • ClassUtils.getClassFileName()方法具有什么功能呢?

    转自 ClassUtils getClassFileName 方法的功能简介说明 下文笔者讲述ClassUtils getClassFileName方法的功能简介说明 如下所示 ClassUtils getClassFileName 方法的
  • 异或运算总结

    其实主要是想介绍一些关于异或的一些例题 方便自己的复习 目录 什么是异或运算 异或运算的性质 异或性质的应用 什么是异或运算 异或 xor 是一个数学运算符 它应用于逻辑运算 异或的数学符号为 计算机符号为 xor 其运算法则为 a b a
  • GPT系列训练与部署——GPT2环境配置与模型训练

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 Python从零开始进行AIGC大模型训练与推理 系列文章 地址为 https blog csdn net suiyingy article details 130169592 Colo
  • APP INVENTOR调用HTTPClient

    APP INVENTOR调用HTTPClient APP中使用HTTPClient调用api 这里使用的是聚合数据提供的API 使用所有的API都是大同小异 参数的参数有所不同 我们这里使用post方式 传回的是json格式 在解析了以后
  • malloc、calloc、realloc、free函数的使用

    malloc realloc calloc free函数大部分在 stdlib h 文件中 malloc 函数 从堆上分配内存 calloc 函数 从堆上分配内存并清零 realloc 函数 在之前分配的内存块的基础上 将内存重新分配为更大
  • anaconda虚拟环境

    1 先看有哪些虚拟环境 conda env list 或者 conda info e 2 创建虚拟环境 conda create n 环境名 python X X X X是python版本 比如3 7 3 激活制定虚拟环境 linux so
  • HighLight

    前言 今天给大家介绍下Highlight Highlight相关属性 the x value of the highlighted value private float mX Float NaN the y value of the hi
  • 用DART来实现远程控制WinPE(类似于teamview)

    In the new Dart 7 release part of MDOP 2011 R2 Microsoft added a remote connection application to WinPE it allows you to
  • APT攻击流程图画法参考

    APT攻击流程图画法参考 画图网站 多组件多阶段 多文件多次网络连接行为 ATTCK Kill Chain 画图网站 我用免费的ProcessOn 图标比较多也好看 个人免费文件是9个 如果不够用只能删了 花钱是不可能花钱的 删之前可以保存
  • vue实现批量打印

  • 数据压缩实验之 H.264编解码实验

    文章目录 1 将两个 264文件进行解码 得到相应的YUV文件 2 将上述两个视频序列编码为 264文件 2 1 固定码率 以不同的GOP长度及形状编码 2 1 1 GOP 15 2B帧 2 1 2 GOP 12 2B帧 2 1 3 GOP
  • Golang三剑客之Pflag、Viper、Cobra

    如何构建应用框架 想知道如何构建应用框架 首先你要明白 一个应用框架包含哪些部分 在我看来 一个应用框架需要包含以下 3 个部分 命令行参数解析 主要用来解析命令行参数 这些命令行参数可以影响命令的运行效果 配置文件解析 一个大型应用 通常
  • Jupyter notebook的使用

    1 参考博客 https www cnblogs com nxld p 6088003 html 一 两种方式 1 启动cmd 然后输入命令 jupyter notebook 就可以直接调转到网页 因为这是在网页上直接运行的 2 一般启动程
  • 试题 B: 顺子日期

    问题描述 小明特别喜欢顺子 顺子指的就是连续的三个数字 123 456 等 顺子日 期指的就是在日期的 yyyymmdd 表示法中 存在任意连续的三位数是一个顺 子的日期 例如 20220123 就是一个顺子日期 因为它出现了一个顺子 12
  • Git代码拉取与同步

    1 git clone email protected xxx xxx git 2 git checkout b dev origin dev 创建本地dev分支 并与远程dev分支关联 3 git remote add upstream
  • 如何做单元测试

    如何做单元测试 一 定义 二 为什么要做单元测试 三 单元测试用例 四 阿里单元测试规约 五 测试框架的使用 Junit 下面以Junit4 为例来介绍 1 1 什么是Junit 1 2 为何使用Junit 1 3 Junit的快速入门 导
  • 学习笔记——SVG.js中形状元素的创建及其相关方法

    CreateElement 1 创建svg元素 在svg js中 每个元素都是一个对象 可以通过构造它来创建 import Rect from svgdotjs svg js var rect new Rect size 100 100 a