在SVG中使用外部绘图

简介:

您可以在 SVG 文档中包括预定义的内容 —— 在呈现的文档内或文档之外定义的内容。

引用内部绘图

symbol,defs 都可以事先定义好图形,而后use来引用

<svg  width="200" height="200" version="1.1"
        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <symbol id="shape2">
        <circle cx="25" cy="25" r="25"></circle>
        <title>My image</title>
    </symbol>

    <defs>
        <g id="shape3">
            <circle cx="25" cy="25" r="25" fill="red"></circle>
        </g>
    </defs>
    <use xlink:href="#shape2" x="50" y="25" ></use>
    <use xlink:href="#shape3" x="150" y="25" ></use>
</svg>

有关symbol,defs的异同点,可以参考这篇文章

引用外部绘图

我们事先已经准备好了一个外部绘图svg文件svg-file-test.svg

1.使用<image>

使用预定义内容作为 SVG 绘图一部分的方法之一是使用 <image>元素。在概念上,SVG 中的<image>与 HTML 中的 <img>非常类似:该元素只须指示呈现客户机在当前的 SVG 环境中绘制外部图像的内容 —— 其本身可能是 SVG 或者是 JPEG 或 PNG 格式的光栅图像。您几乎可以像调整一个规则的图形元素那样来调整外部图像的大小和改变其位置

<svg  width="100%" height="100%" version="1.1"
        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <image  x="0" y="0" width="300" height="200"  xlink:href="../assets/img/svg-file-test.svg"></image>

    <image  x="0" y="200" width="300" height="200"  xlink:href="../assets/img/wl_white.png"></image>
</svg>

2.使用<use>元素

任何svg, symbol, g, 单个的图形元素和use元素本质上都可以作为模板对象被use元素引用(例如初始化)。use引用的图形内容会在指定的位置渲染。与image元素不同,use元素不能引用整个文档。

<svg    width="100%" height="100%" version="1.1"
        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <use xlink:href="../assets/img/svg-file-test.svg#svg2" x="0" y="0"  width="100" height="100" ></use>
    <use xlink:href="../assets/img/svg-file-test.svg#rect2985" x="0" y="325"  width="300" height="200" ></use>
</svg>

第一个use引用了该文件的整个svg元素。

第二个use引用了该文件的rect元素。


目录
相关文章
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
12月前
|
存储 Java 数据库
使用 AuraDB 免费版构建 Java 微服务
使用 AuraDB 免费版构建 Java 微服务
140 11
|
安全 数据处理 数据格式
深入浅出:FFmpeg 音频解码与处理AVFrame全解析(三)
深入浅出:FFmpeg 音频解码与处理AVFrame全解析
496 0
|
12月前
|
机器学习/深度学习 人工智能 TensorFlow
解锁AI潜力:让开源模型在私有环境绽放——手把手教你搭建专属智能服务,保障数据安全与性能优化的秘密攻略
【10月更文挑战第8天】本文介绍了如何将开源的机器学习模型(如TensorFlow下的MobileNet)进行私有化部署,包括环境准备、模型获取与转换、启动TensorFlow Serving服务及验证部署效果等步骤,适用于希望保护用户数据并优化服务性能的企业。
380 4
|
缓存 NoSQL 算法
本地缓存Caffeine系列(四)
本地缓存Caffeine系列(四)
|
11月前
|
安全 API UED
WebSocket API 中的 close 事件是如何触发的?
【10月更文挑战第26天】close事件的触发涵盖了从正常的连接关闭到各种异常情况导致的连接中断等多种场景。通过监听close事件,开发人员可以在连接关闭时进行相应的处理,如清理资源、更新界面状态或尝试重新连接等,以确保应用程序的稳定性和良好的用户体验。
|
存储 Java 开发者
Java 中的线程局部变量是什么?
【8月更文挑战第21天】
190 0
|
前端开发 Oracle Java
JSF(JavaServer Face)标签库简介(JavaEE)
JSF(JavaServer Faces)是JavaEE框架,用于简化Web应用开发,采用组件驱动方式和MVC模式确保可维护性。主要实现包括PrimeFaces、Apache MyFaces和ICEFaces。JSF通过JCP标准化,Oracle提供了JSF2.2和2.3的实现库。JSF应用涉及UI设计、前后端分离及JavaBean交互。实现过程包括网站结构创建、库文件配置、Tomcat的JSF标签库设置以及启动验证。通过创建JSF页面如hello.xhtml,展示其工作原理。
532 2
|
SQL Java 数据库连接
IDEA开发插件有哪些值得推荐?
这篇文章介绍了IntelliJ IDEA中一些实用的神仙插件,包括RestfulTool(用于快速定位请求处理代码)、Translation(方便代码中的英文翻译)、Alibaba Java Coding Guidelines(遵循阿里巴巴编码规范)、Free MyBatis Tool(增强MyBatis支持)和Mybatis Log(整理SQL日志)。此外,还提到了Vue.js插件和可选装的Grep Console(日志高亮)、Maven Helper(解决Maven依赖冲突)以及Private Notes和Rainbow Brackets(代码注释和括号颜色标记)。
255 2
|
存储 NoSQL 中间件
单点登录简述
单点登录简述
293 1