小游戏和GUI编程(5) | SVG图像格式简介

news2024/11/17 12:59:23

小游戏和GUI编程(5) | SVG图像格式简介

0. 问题

  • Q1: SVG 是什么的缩写?
  • Q2: SVG 是一种图像格式吗?
  • Q3: SVG 相对于其他图像格式的优点和缺点是什么?
  • Q4: 哪些工具可以查看 SVG 图像?
  • Q5: SVG 图像格式的规范是怎样的?
  • Q6: 通过写代码的方式,制作 SVG 图像?
  • Q7: 高效制作 SVG 图像, 有哪些辅助工具可以使用?
  • Q8: 怎样在 SFML 中加载 SVG 图像并显示?
  • Q9: SVG 图像怎样转为 jpg/png 图像?

1. SVG 是什么的缩写?

A1: SVG 是 Scalable Vector Graphics 的缩写。

2. SVG 是一种图像格式吗?

.svg 文件是一个 XML 语言代码文件, 是一个图像。

矢量格式将图像存储为一组点和点之间的线。数学公式决定了这些点和线的位置和形状,并在放大或缩小图像时保持它们的空间关系。

例如如下代码保存为 test.svg, 默认被浏览器打开图像并查看:

<svg version="1.1"
  baseProfile="full"
  width="300" height="200"
  xmlns="http://www.w3.org/2000/svg">

  <rect width="100%" height="100%" stroke="red" stroke-width="4" fill="yellow" />

  <circle cx="150" cy="100" r="80" fill="green" />

  <text x="150" y="115" font-size="16" text-anchor="middle" fill="white">RUNOOB SVG TEST</text>

</svg>

在这里插入图片描述

3. SVG 相对于其他图像格式的优点和缺点是什么?

SVG 相比于其他图像格式的优缺点:

优点:

  • 编辑方便, 各种文本编辑器就可以编辑
  • 文件较小, 毕竟是文本
  • 清晰度不会随着放大缩小而影响

4. 哪些工具可以查看 SVG 图像?

哪些工具可以查看 SVG 图像?

  • Edge 浏览器
  • VSCode 默认不能查看, 安装 SVG 扩展后可以预览
  • Beyond Compare: 会默认按照图像方式显示
  • KolourPaint: 会默认按照图像方式显示
  • PyCharm: 会同时显示 svg 文件的代码内容和图像内容
    在这里插入图片描述

5. SVG 图像格式的规范是怎样的?

SVG 图像格式的规范:

  • <svg> 元素开始, 以 </svg> 结束。
  • 支持预定义的形状元素: <rect>, <circle>, <ellipse>, <line>, <poliline>, <ploygon>, <path>
  • 通过对每一种形状 tag 的属性进行设置, 来得到不同的效果, e.g.
  <rect x="50" y="20" rx="20" ry="20" width="150" height="150"
  style="fill:red;stroke:black;stroke-width:5;opacity:0.5"/>
  • 支持滤镜
  • 支持渐变

6. 通过写代码的方式,制作 SVG 图像?

通过写代码的方式,制作 SVG 图像

已经提到过了,就是 xml 代码, 只不过 tag 以及对应的属性, 是特殊的一小撮。

7. 高效制作 SVG 图像, 有哪些辅助工具可以使用?

高效制作 SVG 图像, 有哪些辅助工具可以使用?

https://www.jyshare.com/more/svgeditor/

这个在线工具, 是用鼠标的交互方式, 让人选择形状进行组合。 然后可以查看 svg 的源代码, 也可以转为 png 等图像格式。

8. 怎样在 SFML 中加载 SVG 图像并显示?

高效制作 SVG 图像, 有哪些辅助工具可以使用?

对于通过写代码方式生成 svg 图像, 主要在于编辑后的预览。 VSCode 里搜索 svg 扩展后排名第一个的那个扩展就可以了。

请添加图片描述

对于使用鼠标交互式生成 svg 图像, 使用 InkScape.

9. SVG 图像怎样转为 jpg/png 图像?

SVG 图像怎样转为 jpg/png 图像?

VSCode 插件
VSCode 里的 SVG 插件在预览时, 最右边一个图标是导出为 png 图像。

cairosvg 命令行工具

pip install cairosvg
cairosvg test.svg -o test.png

inkscape

inkscape 是世界上最先进的交互式编辑 svg 的软件, 支持各个操作系统。 也可以查看 xml 代码:

在这里插入图片描述

在这里插入图片描述

10. 总结

svg 格式的详细规范没找到, 乍一看简单的例子, 都是 xml 代码, 比较简单现查现用也来得及。

最为非nodejs程序员, 同行用 VSCode 的 svg 扩展, 就可以编写 svg 代码变看效果了。

如果希望鼠标点一点,组合各种形状, 首推 inkscape 软件, 其次是一些在线工具如: https://www.jyshare.com/more/svgeditor/

References

  • https://www.runoob.com/svg/svg-intro.html
  • https://superuser.com/questions/134679/command-line-application-for-converting-svg-to-png-on-mac-os-x
  • https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial/Tools_for_SVG
  • https://inkscape.org/zh-hans/doc/tutorials/basic/tutorial-basic.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1443265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python贝尔多项式

文章目录 Bell数和Bell多项式第二类Bell多项式 Bell数和Bell多项式 Bell&#xff0c;即所有包含 n n n个对象的有限集合的子集数之和&#xff0c;可通过递推式进行定义 B n ∑ k 0 n − 1 ( n − 1 k ) B k , B 0 1 B_n\sum^{n-1}_{k0}\begin{pmatrix} n-1\\k \end{pmatrix…

基于完全二叉树实现线段树-- [爆竹声中一岁除,线段树下苦踌躇]

文章目录 一.完全二叉树完全二叉树的父子结点引索关系 二.线段树三.基于完全二叉树实现线段树关于线段树的结点数量问题的证明递归建树递归查询区间和递归单点修改线段树模板题 一.完全二叉树 完全二叉树的物理结构是线性表,逻辑结构是二叉树 完全二叉树的父子结点引索关系 …

Javaweb之SpringBootWeb案例之事务管理的详细解析

1. 事务管理 1.1 事务回顾 在数据库阶段我们已学习过事务了&#xff0c;我们讲到&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&am…

【nginx】starrocks通过nginx实现负载均衡、故障转移与flink运行SR实战

文章目录 一. 通过nginx实现starrocks负载均衡与故障转移1. 架构逻辑与nginx配置2. nginx相关知识&#xff1a;stream模块和http模块2.1. stream模块2.2. http模块 二. 使用flink 消费SR实战1. Expect: 100-continue 问题1.1. Expect: 100-continue的逻辑1.2. 问题分析与解决 2…

微软正在偷走你的浏览记录,Edge浏览器偷疯了

虽然现在 Edge 浏览器相当强大&#xff0c;甚至在某种程度上更符合中国用户的使用体验&#xff1b;但最近新的Edge浏览器推出后一直在使用的用户应该有感受到&#xff0c;原本的冰清玉洁的转校生慢慢小鸡脚藏不住了&#xff0c;广告越来越多&#xff0c;越来越流氓了。 电脑之前…

ubuntu彻底卸载cuda 重新安装cuda

sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" cuda10以上 cd /usr/local/cuda-xx.x/bin/ s…

leetcode:51.N皇后

起初会想到暴力&#xff0c;但是N不确定&#xff0c;所以不确定for的嵌套层数&#xff0c;所以我们采用回溯算法。 树形结构&#xff1a; 1.树的深度是第depth层 2.树的宽度是对每一行进行遍历 代码实现&#xff1a; 1.result是三维数组&#xff0c;一个棋盘是二维&#x…

如何实现视线(目光)的检测与实时跟踪

如何实现视线(目光)的检测与实时跟踪 核心步骤展示说明 找到人脸 检测人脸特征点 根据特征点找到人眼区域 高精度梯度算法检测瞳孔中心 根据眼睛周边特征点计算眼睛中心 瞳孔中心和眼睛中心基于视线模型计算视线方向 视线方向可视化 详细实现与说明&#xff1a; https://stud…

挑战杯 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…

百面嵌入式专栏(面试题)驱动开发面试题汇总1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux驱动程序的功能是什么? 对设备初始化和释放。进行内核与硬件的数据交互。检测和处理设备出现的错误。2、内核程序中申请内存使用什么函数? 答案:kmalloc()、kzalloc()、vm…

微服务OAuth 2.1认证授权可行性方案(Spring Security 6)

文章目录 一、背景二、微服务架构介绍三、认证服务器1. 数据库创建2. 新建模块3. 导入依赖和配置4. 安全认证配置类 四、认证服务器测试1. AUTHORIZATION_CODE&#xff08;授权码模式&#xff09;1. 获取授权码2. 获取JWT 2. CLIENT_CREDENTIALS(客户端凭证模式) 五、Gateway1.…

基于物联网的实时数据分析(简单介绍)

在当今这个信息化、数字化飞速发展的时代&#xff0c;物联网&#xff08;Internet of Things, IoT&#xff09;和实时数据分析成为了技术革新的两大支柱。对于刚入行的新手来说&#xff0c;理解这两个概念及其相互作用不仅是迈入这一领域的第一步&#xff0c;更是掌握未来技术趋…

双重OSPF + OSPF综合实验

一、实验要求 1.R4为ISP&#xff0c;所连接的所有物理接口为公有网段&#xff0c;任意指定IP即可。 2.R1-2-3 构建一个星型结构的MGRE结构&#xff0c;其中R1为中心点&#xff0c;假设R1的公有IP为固定地址。 3.R1-5-6 构建另一个全连网状的MGRE网络&#xff0c;其中R1/5均为中…

【见微知著】OpenCV中C++11 lambda方式急速像素遍历

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; C11 lambda语法 C11中引入了lambda表达式&#xff0c;它支持定义一个内联(inline)的函数&#xff0c;作为一个本地的对象或者…

【MySQL】-12 MySQL索引(上篇MySQL索引类型前置-2-高性能的索引策略)

MySQL索引-高性能的索引策略 3 高性能的索引策略3.1 独立的列3.2 前缀索引和索引选择性3.3 多列索引3.4 选择合适的索引列顺序3.5 聚簇索引(Clustered Indexes)3.5.1 InnoDB和MyISAM的数据布局的比较3.5.2 按primary key的顺序插入行(InnoDB) 3.6 覆盖索引(Covering Indexes)3.…

【深度学习】实验7布置,图像超分辨

清华大学驭风计划 因为篇幅原因实验答案分开上传&#xff0c; 实验答案链接http://t.csdnimg.cn/P1yJF 如果需要更详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢迎私信博主&#xff0c;大家可以相互讨论交流哟~~ 深度学习训练营 案例 7 &#xff1…

C语言每日一题(53)翻转二叉树

力扣网 226 翻转二叉树 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出…

[动态规划]判断整除

题目 一个给定的正整数序列&#xff0c;在每个数之前都插入号或-号后计算它们的和。比如序列&#xff1a;1、2、4共有8种可能的序列&#xff1a; (1) (2) (4) 7 (1) (2) (-4) -1 (1) (-2) (4) 3 (1) (-2) (-4) -5 (-1) (2) (4) 5 (-1) (2) (-4) -3 (…

律师小程序,在线咨询,在线问答小程序修复头像

应用介绍 演示前端小程序&#xff1a; #小程序://问卜易学咨询/cVtT0ndctaecDKd 律师小程序是一种智能化的服务平台&#xff0c;提供了多种有益的功能。首先&#xff0c;它能够实现在线法律咨询&#xff0c;用户可以通过文字、语音或视频与律师实时沟通&#xff0c;获得专业意见…

算法学习——LeetCode力扣栈与队列篇1

算法学习——LeetCode力扣栈与队列篇1 232. 用栈实现队列 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQu…