SVG绘图知多少
创作时间:
作者:
@小白创作中心
SVG绘图知多少
引用
CSDN
1.
https://m.blog.csdn.net/weixin_41559503/article/details/145752928
带着几个疑问我们来了解这篇文章:
- SVG是什么?有什么优点?
- SVG可以为我们开发提供什么便利?
- 我们用SVG做了什么?
- SVG还有哪些厉害的实现?
1. SVG简介
(Scalable Vector Graphics,可伸缩矢量图形)是一种基于XML的矢量图形格式,它使用文本文件定义图形,并且可以被多种程序读取和写入。SVG广泛应用于网页设计、图标、数据可视化、地图制作等领域,它的优势在于可伸缩性、可编辑性和与Web技术的兼容性。
2. SVG基本用法
2.1 画一个圆
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="50"/>
</svg>
2.2 绘制简单基本图形
<rect x="0" y="0" width="10" height="10"></rect>
<circle cx="50" cy="50" r="50"/>
<image xlink:href="/files/2917/fxlogo.png" x="0" y="0" height="100" width="100" />
2.3 绘制路线:d是path的专有属性:M、L、Z、H、V、m、l、z、h、v.......
<path d="M 100 100 L 300 100 L 200 300 z" fill="orange" stroke="black"
stroke-width="3" />
2.4 绘制动画
<animate attributeName="rx" values="0;5;0" dur="10s" repeatCount="indefinite" />
3. SVG在Web开发中的应用
优势特性
SVG可以像HTML标签一样应用到页面中,通过使用JavaScript代码控制图片的动画及交互效果。
开发业务功能
在开发快速设计时用到,实现户型图的绘制,并且根据前端操作让用户可以与页面进行交互。
实现效果
例如以下户型图:
- 将图中坐标识别出来生成户型数据
- 使用SVG绘制出以下户型空间
- 点击空间区域,可以实现对空间的名称和面积进行修改
实现代码
<svg
id="svg"
version="1.1"
baseProfile="full"
:viewBox="viewBoxSize"
xmlns="http://www.w3.org/2000/svg">
<path
v-for="(item, index) in pathMsg"
id="MyStyle"
:key="index"
:d="item.pathStr"
flag="true"
@click="selectedRoom(item, 1)" />
<text
v-for="(item, index) in pathMsg"
:key="index"
text-anchor="middle"
fill="black"
@click="selectedRoom(item, 1)">
<tspan
:x="item.centerPos[0]"
:y="item.centerPos[1]-2"
class="room"
font-size="10"
font-weight="500"
:fill="#666">{{item.name}}</tspan>
<tspan
v-if="item.selected"
:x="item.centerPos[0]"
:y="item.centerPos[1]+13"
class="room-msg"
font-size="12"
font-weight="400"
:fill="#666">{{item.area}}㎡</tspan>
</text>
</svg>
// 选中空间的时候对数据修改并重新触发svg绘制
selectedRoom(){
//…… 更新pathMsg数据
}
- path:绘制路径
- text:绘制文本
- tspan:绘制文本下的内容
4. 实现简单有趣的Demo
demo1
代码so easy:
<svg width="1000" height="1000">
<!-- 下面是个区域的路径 -->
<!-- [[307.65,249.35],[307.65,317.83],[481.93,317.83],[481.93,249.35],[307.65,249.35]] -->
</svg>
demo2
添加动画的行进中的小车
上代码:
<svg width="200px" height="100px" viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
<!-- 小车车身 -->
<rect x="10" y="40" width="30" height="20" fill="blue">
<!-- 动画:沿x轴滑动 -->
<animateTransform
attributeName="transform"
attributeType="XML"
type="translate"
from="0" to="150"
dur="5s"
repeatCount="indefinite"
/>
</rect>
<!-- 小车前轮 -->
<circle cx="15" cy="60" r="5" fill="black">
<!-- 动画:沿x轴滑动 -->
<animateTransform
attributeName="transform"
attributeType="XML"
type="translate"
from="0" to="150"
dur="5s"
repeatCount="indefinite"
/>
</circle>
<!-- 小车后轮 -->
<circle cx="35" cy="60" r="5" fill="black">
<animateTransform
attributeName="transform"
attributeType="XML"
type="translate"
from="0" to="150"
dur="5s"
repeatCount="indefinite"
/>
</circle>
<!--地面-->
<line x1="0" y1="65" x2="210" y2="65" style="stroke:black;stroke-width:2" />
</svg>
5. SVG的更多应用场景
- 物理中的一些力学小实验(可以使用JavaScript来做交互拖拽)
- 一些有趣的表情包
6. SVG的高级应用
- d3图表库
- echarts图表库
7. SVG绘制工具
可以使用Inkscape,这是一个类似Photoshop的工具,可以通过拖拽快速生成想要的SVG图片。
热门推荐
王姓分布地图:从华北到全国的千年传承
冬季中风高发,苏合香丸能救命?这些急救知识要记牢
情侣争吵后如何快速和好?7个实用步骤帮你修复感情
《爱情公寓》情侣争吵后的和好秘籍
水飞蓟姜黄素联手护肝,新技术解决吸收难题
比尼亚莱斯山谷:喀斯特地貌与洞穴奇观的世界遗产
望京交通大升级,地铁口和枢纽齐上线!
望京美食攻略:从四季民福烤鸭到地道小吃
炼油厂安全管理:从法规标准到最佳实践
红外热像系统:炼油厂安全检测的智能之眼
众道妙方宝宝冬日养生食疗篇 —— 马蹄银耳雪梨汤
G3587次列车带你畅游北海
宁波市第二医院专家详解:如何通过筛查和健康生活预防肠癌
NEJM发布重大突破:无创肠癌筛查准确率大幅提升
狮子座的骄傲:要面子、敢直言、热情似火
天秤座完全指南:热情助人但又怕担责任
罗素谈爱:爱是精神与肉体的完美结合
三元催化清洗剂:让你的车焕发新生的秘密武器
复方甘草酸苷美塑疗法:治疗痤疮的新选择,疗效优于传统方法
复方甘草酸苷联合美塑疗法治疗痤疮效果显著,专家建议谨慎使用
首份国家生态保护修复公报发布,展现中国生态治理智慧与成效
末日拼图游戏:普雷尔之眼的制胜之道
末日拼图游戏:白雾五九的黄金搭档为何如此圈粉?
Unity+C#,打造你的游戏帝国
金钱焦虑如何破?一个案例教你做好理财规划
肝纤维化无创诊断新进展:EUS触诊与FibroScan各具优势
无创诊断肝纤维化:复旦团队发现关键分子标志物FAPα
王者荣耀:黄盾典韦到底靠谱吗?可以玩,但没必要,甚至不如曹操
类风湿关节炎患者球蛋白升高,使用托珠单抗可控制病情
心血管斑块防治新进展:丹参丸获临床研究证实