o'Reill的SVG精髓(第二版)学习笔记——第一章

时间:2022-12-06 14:43:52

1.1图形系统

计算机中描述图形信息的两大系统是栅格系统(raster graphics)和矢量图形(vector graphics)

1.1.4矢量图形的用途

①计算机辅助绘图(CAD)程序。

②设计用于高分辨率打印图形的程序,如Adobe Illustrator

③Adobe PostScript打印和成像语言,打印的每个字符都用直线和曲线来描述。

④基于矢量图形的Macromedia Flash系统,用来设计动画、演示和网站。

1.3 SVG的应用:在web中,许多浏览器都原生支持SVG,而且SVG具有很多与HTML中CSS样式相同的变换和动画能力。由于SVG文件就是XML,因此其中的文本可以被使用任何能够解析XML的用户代理读取显示。

绘制一个简单的图像

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="140" height="170" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Cat</title>
<des>Stick Figure of a Cat</des>
<!-- 在这里绘制图像 -->
<!-- 圆形 -->
<circle cx="70" cy="95" r="50" style="stroke:black;fill:none;" />
<circle cx="55" cy="80" r="5" stroke="black" fill="#339933" />
<circle cx="85" cy="80" r="5" stroke="black" fill="#339933" />
<g id="whiskers">
<line x1="75" y1="95" x2="135" y2="85" style="stroke:black;" />
<line x1="75" y1="95" x2="135" y2="105" style="stroke:black;" />
</g>
<!-- 复用右侧胡须,转换为左侧胡须 -->
<use xlink:href="#whiskers" transform="scale(-1 1) translate(-140 0)" />
<!-- 耳朵 -->
<polyline points="108 62, 90 10, 70 45, 50, 10, 32, 62" style="stroke:black;fill:none;" />
<polyline points="35 110,45 120,95 120,105,110" style="stroke:black;fill:none;" />
<!-- 使用path绘制鼻子 -->
<path d="M 75 90 L 65 90 A 5 10 0 0 0 75 90" style="stroke:black;fill:#ffcccc" />
<!-- 移动到坐标(75,90)。绘制一条到坐标(65,90)的直线。然后以x为半径为5、y半径为10绘制一个椭圆,最后回到坐标(75,90)处。 -->
<text x="55" y="165" style="font-family:sans-serif;font-size:14pt;stroke:none;fill:black;">Cat</text>
</svg>

<circle>元素来绘制猫的脸部。这个元素的属性指定中心点x坐标和y坐标以及半径。点(0,0)为图像的左上角。水平向右移动时x坐标增大,垂直向下移动时,y坐标增大。

填充(fill)和轮廓画笔颜色(stroke)也可以写在两个单独的属性中,而不是全部写在style属性中。

胡须:右侧胡须可以作为一个部件,所以把他们包装在分组元素<g>里面,然后给它一个id。可以通过指定起点和终点x坐标和y坐标(分别为x1和y1以及x2和y2)的方式绘制一条直线。

可以使用<use>复用胡须分组并将它变化(transform)为左侧胡须。首先在scale变换中对x坐标乘以-1,翻转了坐标系统。这意味着原始坐标系统中的点(75,95)现在位于(-75,95)。在新的坐标系统中,向左移动会是坐标增大。就是必须将坐标系统向右translate(平移)140个像素(负值),才能将它们移到目标位置。

使用<polyline>元素构建嘴巴和耳朵,元素接受一堆x和y坐标作为points属性的值。可以根据喜好使用空格或者逗号分隔这些数值。

路径<path>元素被设计用来以尽可能简洁的方式指定路径或者一系列直线和曲线。

<text>元素中,x和y属性用于指定文本的位置,它们也是结构的一部分。

o'Reill的SVG精髓(第二版)学习笔记——第一章的更多相关文章

  1. c&num;高级编程第七版 学习笔记 第一章 &period;NET体系结构

    第一章      .NET体系结构 本章内容: 编译和运行面向.NET的代码 Microsoft中间语言(Microsoft Intermediate Language,MSIL或简称IL)的优点 值 ...

  2. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  3. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  4. 锋利的jquery第二版学习笔记

    jquery系统学习笔记 一.初识:jquery的优势:1.轻量级(压缩后不到30KB)2.强大的选择器(支持css1.css2选择器的全部 css3的大部分 以及一些独创的 加入插件的话还可支持XP ...

  5. Windows程序设计&lpar;第五版&rpar;学习:第一章 起步

    第一章 起步 1,windows主要的三个动态库: kernel32.dll负责操作系统的传统工作,包括内存管理.文件输入以及任务管理等. user32.dll负责用户界面的操作,即所有窗口的管理 g ...

  6. JavaScript高级程序设计学习笔记第一章

    作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...

  7. Java学习笔记 第一章 入门&lt&semi;转&gt&semi;

    第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...

  8. 《跟我学Shiro》学习笔记 第一章&colon;Shiro简介

    前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...

  9. GIT学习笔记——第一章

    git之vim编辑器退出命令 # 学习笔记 张文军微博主页  张文军码云主页   张文军新浪云主页  张文军博客主页 ## 刚学习git,好多东西没接触过,进入vim后不知道如何出来了,网上找了很多都 ...

  10. Java 学习笔记 第一章:Java语言开发环境搭建

    第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...

随机推荐

  1. linux中实现自动交互的3中方法

    本文参考了 http://os.51cto.com/art/200912/167898.htm 有些命令例如ftp需要交互,有三种方法可以实现. 方法一(重定向)简单直观,也经常有实际应用,但是在自动 ...

  2. mtk的安卓手机刷机时出现的错误信息

    手机已成砖,用过好多工具都没刷回来,以下是用smart phone flash tool刷机时出现的错误信息 ---------------------------Smart Phone Flash ...

  3. 图灵API

    namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine( ...

  4. Eclipse控制台中文乱码

    换了OS真是,主要就是对Eclipse的配置操作不熟悉.用着不顺手.源文件一直都是按照google java style的做法保存为UTF-8.现在显示乱码,就得改Eclipse解码的配置为 UTF- ...

  5. pulltorefresh 设置刷新文字提示颜色

     xmlns:ptr="http://schemas.android.com/apk/res-auto" 赵泽民 2016/7/12 15:48:58 ptr:ptrHeaderS ...

  6. Android 控件背景选择图片还是drawable XML资源

    决定一个控件应该是否用Drawable XML渲染,应考虑以下几个因素: * App是否要支持多分辨率: * App是否有瘦身的需要: * 图案是否足够简单: * 图案需要*缩放: * 设计开发工作 ...

  7. 【XSY1596】旅行 期望DP

    题目大意 有\(m\)个游客, 他们都依次访问城市\(1,2,3,\ldots,n\), 第\(i\)个游客到达任意一个城市后有\(p_i\)的概率会停下, 不再继续前行 设\(c_i\)个乘客经过了 ...

  8. 如何在Mac上安全彻底的卸载软件?

    文章来源:知乎 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一)综合类: 新买 ...

  9. Kibana中的Coordinate Map地图报索引错误的问题

    今天做地图定位展示,展示的是ApacheWeb服务器的访问日志文件中的来源IP.但是中间出现了报错环节,说是索引不能匹配到geo_point类型,实在是不懂这是在说什么,后来在网站找了方法就解决了.主 ...

  10. fsck 工具 &mdash&semi;&mdash&semi;检查 与修复 Linux系统上的文件系统

    可能由于昨天关电脑断电源的问题, 后来开机,直接出现如下界面: 心里想,不会吧,电脑怎么又出问题了吧(上周的时候,手贱,把装系统的硬盘分区设为了非活动分区,电脑就启动不来了,后来手动引导起来的:): ...