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. 开源TSDB简介--Druid

    开源TSDB简介--Druid Druid是一个以Java编写的开源分布式列式数据存储. Druid的目标是快速提取大量事件数据,并提供低延迟的查询. 德鲁伊的名字来源于许多角色扮演游戏中的变形德鲁伊 ...

  2. 深入理解JavaScript系列(3):全面解析Module模式

    简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式. 首先我们来看看Module模式的基本特征: 模块化,可 ...

  3. 关于“System.Data.ProviderIncompatibleException”类型的异常

    作为刚学习MVC的菜鸟,因为平常的不努力学习.看书,所以只能参考官方的教程学习操作新手入门 一步一步认真的做,前天晚上出现了一个关于数据库连接字符串错误的问题,自己查了很多资料, 问了许多大神,他们的 ...

  4. Mysql自动更新字段时间

    Mysql中更新某天数据可设置该条数据中的某个字段自动更新 ALTER TABLE `表名` MODIFY `字段名` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON U ...

  5. C#学习笔记13

    1.Task概述:Task是对操作系统线程的抽象,目的是使线程池能高效地管理线程的分配和回收,Task使用的底层线程属于一种共享资源,任务需要互相协作,并及时归还线程,以便用相同的共享资源(线程)满足 ...

  6. Supper关键字

    java中的super关键字是一个引用变量,用于引用直接父类对象. 每当创建子类的实例时,父类的实例被隐式创建,由super关键字引用变量引用. java super关键字的用法如下: super可以 ...

  7. jq实现发送验证码倒计时60s

    setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式.方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭. setTimeout() :在指定的毫 ...

  8. sheepdog

  9. 关于Java中的线程安全(线程同步)

    java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...

  10. 三大框架之list

    前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...