使用SVG Path绘图

最近一个项目,需要做个Web版本的设计器,用来进行工厂流水线布局的设计。

项目中采用了SVG.JS来做,但是以前流水线是采用单纯的画线的方式实现。客户提出希望用不同的底纹表示不同的流水线,经过一番调查,最终决定采用Path,用pattern的方式来填充底纹。

但是文档中对pattern的使用描述的比较含糊,通过一些实验,终于弄的比较清楚了。总结一下:

1、path中的X、Y参数是指以整个画面的左上角为(0,0),来设置偏移的。如果设为0,就是从(0,0)进行填充。如果在(20,20)为起点的地方,画一个RECT的PATH,里面用pattern填充30,30大小的方块。那么在这个RECT的左上角,会出现填充了10,10的一个方块,其他的部分在这个RECT之外。

2、pattern中的width、height,分别是用来设置平铺时元素的x、y轴的间隔距离的。但是要注意,这个值包含了填充形状本身的大小。同上,要想内部的填充方块的上下间距都是10。则要设置width、height分别为40(方块本身为30,30)。

3、patternTransform,用来设置填充形状的翻转角度。例如设想在一个RECT中填充一些小方块作为底纹。但RECT旋转45°时,这些小方块还是保持水平描画,就会看起来很奇怪。那么就需要用到这个参数了。设置后,填充形状也会进行对应的翻转。使用patternTransform="rotate(45)"这样的方式来指定翻转角度。

用图来说明更清楚些,但截图太麻烦,直接上代码,自己改着试试就知道了。

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
<pattern id="notes" x="20" y="20" width="50" height="25" patternTransform="rotate(45)" patternUnits="userSpaceOnUse">
<rect width="20" height="20" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)"/>
</pattern>
<path stroke="lightgrey" stroke-linecap="round" stroke-width="1" d="M0 0 L250 0 L250 250 L0 250 Z" />
<path style="fill:url(#notes)" stroke="lightgrey" stroke-linecap="round" stroke-width="1" d="M20 20 L200 20 L200 150 L20 150 Z" />
</svg>

另外,由于是要动态画图,所以采用了DOM的方式操纵。

具体来说,就是要先创建相应的SVG对象:

var path = document.createElementNS("http://www.w3.org/2000/svg", "path");

然后设置相应的属性:

path.setAttribute("fill", "notes");

使用SVG Path绘图

时间: 2024-10-18 06:25:44

使用SVG Path绘图的相关文章

Base64 URL image CSS &amp; 在线base64 加密/解密 link: $ svg path 线宽:stroke-width

Base64 URL image CSSData URI scheme是在RFC2397中定义的svg path 线宽:stroke-width 在线base64 加密/解密 link: 那么这是什么呢?这是Data URI scheme. Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了,一张1X36的白灰png图片. 在上面的D

SVG path绘制百分比圆弧,给力啊

利用SVG的circle可以绘制百分比圆弧,但总觉得有点不够高端,相比起来,我更喜欢利用SVG的path来绘制百分比圆弧,因为其中会利用到绘制圆弧的基本数学知识(我已经把数学还给了老师,从网络上抓取别人的成果,进行了改造),这样就觉得很有装逼范. 一.效果图 二.实现方法 页面元素构成 <svg height="108" version="1.1" width="108" xmlns="http://www.w3.org/2000

SVG Path高级教程

课程分为四个方面: 1. Path概述 2. 移动和直线命令 3. 弧线命令 4. 贝塞尔曲线命令 Path概述 <path> 标签用来定义路径,Path字符串是由命令及其参数组组成的字符串,是非常强大的绘图工具. 例如: <path  d="M0,0L10,20C30-10,40,20,100,100"  stroke="red"> 命令汇总 命令 含义 M/m (x,y) 移动当前位置 L/l (x,y) 从当前位置绘制线段到指定位置

svg path中的贝塞尔曲线

首先介绍以下什么是贝塞尔曲线 贝塞尔曲线又叫贝茨曲线(Bezier),由两个端点以及若干个控制点组成,只有两个端点在曲线上,控制点不在曲线上,只是控制曲线的走向. 控制点个数为0时,它是一条直线; 控制点个数为1时,它是二次贝塞尔曲线; 控制点个数为2时,它是三次贝塞尔曲线: .... 数学公式 二次贝塞尔曲线 p0,p2是起始点,p1是控制点 分别把p0,p1,p2点的x,y坐标带入,求出曲线上的点的x,y坐标 三次贝塞尔曲线 p0,p3是起始点,p1,p2是控制点 svg的path中与贝塞尔

SVG -- path路径

SVG 路径 - <path> <path> 元素用于定义一个路径. 下面的命令可用于路径数据: M = moveto = 移动到 L = lineto = 连线到 H = horizontal lineto = 水平连线连接到 V = vertical lineto = 垂直连线连接到 C = curveto = 使用平滑三次贝塞尔曲线连接到 S = smooth curveto = 使用平滑曲线连接到 Q = quadratic Bézier curve = 使用二次贝塞尔曲线

svg path详解

svg的<path>标签具有强大的功能,主要包括以下命令 M(move to) 参数:x,y L(line to) 参数:x,y H 参数:x V 参数:y C S Q T Z 参考:

Android L New API之Verctor动画 1 —— SVG Path

导入 1.VectorDrawable是Android L中新增的一个API,让你可以创建基于XML的矢量图,并结合AnimatedVectorDrawable来实现动画效果. 2.Android L新增支持Vector标签,可以使用Path创建动画,同时支持SVG格式. SVG 简介 1.SVG 指可伸缩矢量图形 (Scalable Vector Graphics)2.SVG 用来定义用于网络的基于矢量的图形3.SVG 使用 XML 格式定义图形4.SVG 图像在放大或改变尺寸的情况下其图形质

SVG Path路径使用(一)

一.<path> 标签 <path> 标签用来定义路径. 下面的命令可用于路径数据: M = moveto L = lineto H = horizontal lineto V = vertical lineto C = curveto S = smooth curveto Q = quadratic Belzier curve T = smooth quadratic Belzier curveto A = elliptical Arc Z = closepath 注释:以上所有

SVG path 标签根据两点和角度绘制弧线

同步发布:https://blog.jijian.link/2020-04-14/svg-arc/ 由于功能受限,此处不能放 iframe 嵌入链接,如需看到实施效果,请移步 https://blog.jijian.link/2020-04-14/svg-arc/ 解析 <path> 标签应该算是 SVG 中最为强大的标签了,各种图形都可以用他绘制. 本文使用 path 标签的贝塞尔曲线 Q 指令绘制弧线. 用法 <path d="M30 90 Q115 139 200 90&