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. Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数

    目前,EF对存储过程的支持并不完善.存在以下问题: EF不支持存储过程返回多表联合查询的结果集. EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. 虽然可以正常导 ...

  2. HDU 5012 骰子旋转(DFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=5012 保存骰子的状态,然后用dfs或者bfs搜索 还是再讲一下dfs 我们的目标是找一个与b相同,且转次数最少的 ...

  3. VUE-地区选择器(V-Distpicker)

    V - Distpicker 地区选择器环境问题不多说,自己看文档,主要讲一下在实际使用过程中如何将下拉框的值赋值到对象属性上.文档: https://distpicker.pigjian.com/g ...

  4. 洛谷P1970 花匠(dp)

    题意 题目链接 Sol 直接用\(f[i][0/1]\)表示到第\(i\)个位置,该位置是以上升结尾还是以下降结尾 转移的时候只需枚举前一个即可 #include<cstdio> #inc ...

  5. 闭包中的this

    var name="pushline";//全局变量 var obj=new Object(); obj.name="jms"; obj.getName=fun ...

  6. css3制作有动画效果的面板

    .show-panel .slide-panels{ right: 0px; } .slide-panels{ z-index: 101; background: #fff; position: fi ...

  7. Dubbo架构原理

    1 Dubbo核心功能 Remoting:远程通讯,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式. Cluster: 服务框架,提供基于接口方法的透明远程过程调用 ...

  8. sqlServer拼结列字符串

    with table1(sessionID,message,createTime)as(select 1 ,'hello' ,'2014/5/6' union allselect 1 ,'word' ...

  9. html 表格单元格的宽度和高度的设置

    做网页的时候,经常会碰到表格宽度对不齐的问题.详细地看了html中表格标签table的高度和宽度设置的细节,现总结如下: 1.table中的width和height设置及其作用:table中设置的he ...

  10. java实现12306的45分钟内支付,45分钟后取消订单功能?

    java实现12306的45分钟内支付,45分钟后取消订单功能? - 回答作者: 匿名用户 https://zhihu.com/question/27254071/answer/35948645