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

小游戏和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.mzph.cn/news/677744.shtml

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

相关文章

Linux中常用的工具

软件安装 yum 软件包 在Linux中&#xff0c;软件包是一种预编译的程序集合&#xff0c;通常包含了用户需要的应用程序、库、文档和其他依赖项。 软件包管理工具是用于安装、更新和删除这些软件包的软件。常见的Linux软件包管理工具包括APT&#xff08;Advanced Packaging To…

《CSS 简易速速上手小册》第3章:CSS 响应式设计(2024 最新版)

文章目录 3.1 媒体查询基础&#xff1a;网页的智能眼镜3.1.1 基础知识3.1.2 重点案例&#xff1a;适应三种设备的响应式布局3.1.3 拓展案例 1&#xff1a;改变字体大小3.1.4 拓展案例 2&#xff1a;暗模式适配 3.2 响应式图片和视频&#xff1a;让内容自由呼吸3.2.1 基础知识3.…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

猜猜谁是凶手?

目录 一、题目二、思路三、完整代码 一、题目 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff1a;C在胡说 已知3个人说了…

Linux系统基础 03 IP地址虚拟网络、Linux软件包管理、ssh服务、apache服务和samba服务的简单搭建

文章目录 一、IP地址虚拟网络二、Linux软件包管理1、rpm包管理器2、yum包管理器3、源码安装 三、ssh服务四、apache服务五、samba服务 一、IP地址虚拟网络 1、IP地址格式是点分十进制&#xff0c;例&#xff1a;172.16.45.10。即4段8位二进制 2、IP地址分为网络位和主机位。网…

杨辉三角的变形(数学)

题目 import java.util.Scanner;public class Main {public static void main(String[] args) { // 1 // 1 1 1 // 1 2 3 2 1 // 1 3 6 7 6 3 1 // 1 4 10 16 19 16 10 4 1Scanner sc new Scanner(System.in);int n sc.nextInt();int[][] res new int[n1][2*n];for(i…

【Linux】构建模块

&#x1f525;博客主页&#xff1a;PannLZ &#x1f38b;系列专栏&#xff1a;《Linux系统之路》 &#x1f94a;不要让自己再留有遗憾&#xff0c;加油吧&#xff01; 文章目录 构建第一个模块1模块的makefile2内核树内构建3内核树外构建 构建第一个模块 可以在两个地方构建模…

Spring Boot 笔记 005 环境搭建

1.1 创建数据库和表&#xff08;略&#xff09; 2.1 创建Maven工程 2.2 补齐resource文件夹和application.yml文件 2.3 porn.xml中引入web,mybatis,mysql等依赖 2.3.1 引入springboot parent 2.3.2 删除junit 依赖--不能删&#xff0c;删了会报错 2.3.3 引入spring web依赖…

【十四】【C++】list 的常见用法

list 的初始化和遍历 /*list的初始化和遍历*/ #if 1 #include <list> #include <vector> #include <iostream> #include<algorithm> using namespace std;void TestList1(){list<int> L1;list<int> L2(10, 5);vector<int> v{1,2,3,4…

Linux之umask的使用

一、umask的作用 umask值用于设置用户在创建新文件和目录时的默认权限。umask值一共有4组数字&#xff0c;其中第1组数字用于定义特殊权限&#xff0c;一般不关心&#xff0c;日常工作中大家用的更多的是后面三组数字。以下图为例&#xff0c;输入“umask”命令之后&#xff0c…

音视频/流媒体协议和编码汇总

一、流媒体协议 1. RTMP/RTMPT/RTMPS/RTMPE 等多变种 是应用层协议&#xff0c;使用TCP作为底层传输协议&#xff0c;并提供了低延迟、高带宽利用率和实时性的特点。 (1)RTMP协议是Adobe的私有协议,未完全公开 (2)一般传输的是 flv&#xff0c;f4v 格式流 2. RTP/RTCP/SRTP …

Maven进阶

一、分模块开发与设计 1. 分模块开发的意义 问题导入 分模块开发对工程有什么好处&#xff1f; 模块拆分原则 目的&#xff1a;项目的扩展性变强了&#xff0c;方便其他项目引用相同的功能。 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#…

AI新工具(20240210) Osam - Osam是一个启用本地运行的开源llm;Whishper - Whishper是一个开源的语音工具

Osam - Osam是一个启用本地运行的开源“一切分割”模型工具&#xff0c;支持多种接口和自定义视觉模型。 Osam是一个开源工具&#xff0c;它允许本地运行“可对任何内容进行分割”的模型(Segment-Anything Models)&#xff0c;灵感来源于Ollama。使用Osam&#xff0c;用户可以…

结构体的大小以及内存对齐问题

结构体的大小怎么计算&#xff1f;什么是结构体的对齐&#xff1f; 首先想要直到结构体的大小需要先了解结构体的内存对齐。那么&#xff0c;什么是结构体的内存对齐&#xff1a; 什么是结构体内存对齐 结构体的对齐 就是 结构体类型数据在内存中按照一定的对齐规律储存。结…

【深度学习:MPT-30B】提高开源基础模型的标准

【深度学习&#xff1a;MPT-30B】提高开源基础模型的标准 MPT-30B家族MPT-30B (Base)MPT-30B-InstructMPT-30B-Chat使用 MosaicML Inference 部署 MPT-30B 模型通过 MosaicML 培训定制 MPT-30BLLM Foundry 下一步是什么&#xff1f; 附录致谢数据MPT-30B 8k 上下文窗口微调数据…

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 静态开辟内存 通过前面的学习&#xff0c;我们已经掌握了两种开辟内存的方…

拟合案例1:matlab积分函数拟合详细步骤及源码

本文介绍一下基于matlab实现积分函数拟合的过程。采用的工具是lsqcurvefit和nlinfit两个函数工具。关于包含积分运算的函数,这里可以分为两大类啊。我们用具体的案例来展示:一种是积分运算中不包含这个自变量,如下图的第一个公式,也就是说它这个积分运算只有R和Q这两个待定…

用Python动态展示排序算法

文章目录 选择冒泡插入排序归并排序希尔排序 经常看到这种算法可视化的图片&#xff0c;但往往做不到和画图的人心灵相通&#xff0c;所以想自己画一下&#xff0c;本文主要实现归并排序和希尔排序&#xff0c;如果想实现其他算法可参考这篇 C语言实现各种排序算法[选择&#x…

[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法

【创建圆形进度条流程】 在C# WinForms应用程序中创建一个圆形进度条&#xff08;通常用作仪表盘的显示&#xff09;可以通过多种方式实现。下面是一个简单的例子&#xff0c;演示如何使用System.Drawing命名空间中的图形绘制功能来绘制一个基本的圆形进度条。 首先&#xff0…

基于springboot超市进销存系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;超市进销存系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而超…