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#高级编程第七版 学习笔记 第一章 .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程序设计(第五版)学习:第一章 起步

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

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

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

  7. Java学习笔记 第一章 入门<转>

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

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

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

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

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

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

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

随机推荐

  1. nyoj 325——zb的生日——————【dp】

    zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...

  2. nyoj 269——VF——————【dp】

    VF 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Vasya is the beginning mathematician. He decided to make ...

  3. Java学习第二十四天

    1:多线程(理解) (1)JDK5以后的针对线程的锁定操作和释放操作 Lock锁 (2)死锁问题的描述和代码体现 (3)生产者和消费者多线程体现(线程间通信问题) 以学生作为资源来实现的 资源类:St ...

  4. python 模板注入

    今天学习了python的模板注入,这里自己搭建环境测试以下,参考文章:http://www.freebuf.com/articles/web/136118.html web 程序包括两个文件: fla ...

  5. 【linux】基础操作命令

    1.查找文件或者程序位置 root@ROUTER:~# which is hostapd/sbin/hostapd

  6. Java的输入/输出操作

    Java的输入\输出机制 计算机的基本功能就是通过输入输出设备与外部其他设备尽心数据的交互,从其他设备读入数据叫做输入操作,将计算机内的数据写入到其他设备叫做输出操作.可以向计算机发送数据.又可以接受 ...

  7. DispatchAction和ForwardAction

    添加功能的步骤:做页面——编写DAO类中的方法——编写和配置action. 如果多个action 使用一个formbean,这种事儿多发生在统一模块中,就可以用一个Action集中处理多个操作,而不要 ...

  8. Windows C/C++ 内存泄露检测

    #pragma once #define _CRTDBG_MAP_ALLOC #include<crtdbg.h> #include<stdlib.h> #include< ...

  9. 爬虫入门之urllib库(一)

    1 爬虫概述 (1)互联网爬虫 一个程序,根据Url进行爬取网页,获取有用信息 (2)核心任务 爬取网页 解析数据 难点 :爬虫和反爬虫之间的博弈 (3)爬虫语言 php 多进程和多线程支持不好 ja ...

  10. day008-File文件

    1. File 文件和目录路径名的抽象表示形式. 一个File类对象就代表了一个文件或文件夹. 1.1 File类的作用 用来操作硬盘上的文件或文件夹 绝对路径:一般是以盘符开始的,比如:C:/Jav ...