canvas和svg
canvas画布
1.不要再style中给canvas设置宽高,会有位移差
<canvas width="300" height="500" id="c"></canvas>
但可以设置画布的背景色
2.
var c=document.getElementById("c")//给c设置子一个绘图环境 得到一个对象 var can=c.getContext("2d")
canvas本身只是一个H5新标签,他的本质和div差不多
但当给了他 getContext("2d") 后 就成为了一个画图对象
然后就可以通过他内置的属性方法进行作画
绘制方块:
fillRect() 绘制一个填充的方块 默认颜色是黑色 但是可以通过 fillStyle(填充颜色) 改变
注意:一切样式的改变都要在写在绘制之前 遵循js从上往下执行的规则
can.fillStyle="red" can.fillRect(20,30,100,100)
我这一个方块就是先将其颜色变为红色,然后再绘制出来
fillRect()中有4个参数 分别代表着 方块的 x轴位置 y轴位置 宽 以及 高
位置都想相对于画布的左上角为(0,0) 进行移动的
(我的画布部分为白色,非画布部分是黑色)
strokeRect() 绘制带边框的方块 默认边框颜色是黑色 但是可以通过 strokeStyle(填充颜色) 改变
strokeRect()中有4个参数 分别代表着 方块的 x轴位置 y轴位置 宽 以及 高 (跟填充差不多)
can.fillStyle="red" can.strokeRect(20,30,100,100)
绘制线条:
moveTo() 绘制线段的起点
lineTo() 绘制线段的领点
每个线段只能有一个moveTo 可以有多个lineTo
stroke() 绘制线段
beginPath() 开始绘制路径
closePath() 结束绘制路径 二者同时出现 将绘制路径闭合
(起始点 结尾点首尾相连)
Rect() 绘制方块
clearRect(0,0,width,height) 清除画布(画布中图样的不断变化,是通过不断清除画图,不断重复作画得出的)
save() 保存路径
restore() 回复路径
二者成对出现,中间的属性样式只影响内部 不影响外面
画圆:
arc()
can.arc(150,150,95,0,2*Math.PI,false)
参数作用分别为 x , y圆心位置(都是以canvas画布的左上角为起点) 半径 弧度起点 弧度终点 false(顺时针)/true(逆时针)
注意 :角度有正负之分 顺时针转的角度是正的, 逆时针转的角度是负的
画布的平移和旋转
平移translate画布大小位置不变 起始坐标 变了
can.translate(100,100)
相当于坐标平移
rotate()
画布的旋转都是以(0,0)起始点为中心点旋转
scale(0.5,0.5)
画布的缩放 就是将画布向后移动 跟人的视距就变远了 近大远小
画布中插入图片
var img=new Image;img.src="bg.jpg"img.οnlοad=function(){can.drawImage(img,10,20,160,200)}
需要创建一个图片对象,让图片被加载完成后执行
插入字体:
200,200字体的起始点 默认起始点在文字的左下角
svg 矢量图
svg绘制矢量图 canvas用于绘制位图
svg使用xml格式绘制图形
svg要有一个根节点 叫svg标签 就相当于 html
svg如果不设置大小 默认占用面积 300*150
定义矩形
<rect></rect> 属性: width(宽) height(高) x y(位置) rx ry(圆角) fill(填充颜色) stroke-width(边框宽度) stroke(边框颜色)
opacity透明度(填充和边框都改变) fill-opacity填充透明度 stroke-opacity边框透明度
定义圆
<circle></circle> 属性: cx cy(圆心坐标) r(半径)
定义椭圆
<ellipse></ellipse> cx cy(圆心坐标) rx(定义x轴半径) ry(定义y轴半径)
定义直线
<line></line> x1 y1(起始坐标) x2 y2(定义结束坐标) stroke(线段颜色)
定义路径
<path></path>
M是起点坐标
L是相邻点坐标
Z让路径构成闭合回路
H代表水平的线条 默认y轴上的值一样
V 代表垂直的线条 默认x轴上的值一样
A 后面跟七个值
Transfrom 转换 svg中的一个属性 translate rotate scale
平移 旋转 都是以起点0 0(svg的左上角)点为参考点 而css3中以元素的中心点为参考点
g 用于将相关元素进行组合
g身上的属性 子元素都会继承 但是g上的属性都必须是显现属性 不是svg元素私有的 比如 g 上的圆心坐标不行
Text 用于定义文本 x y xy的值在字体的左下角
Text-anchor=”middle” 让字体居中
Image 绘制图片
<use>用于复制元素 x y
xy 是相对于原始的元素的坐标位置 不是相对svg的00点坐标
animate
写在需要动画元素的中间
attributeName form to dur repeatCount=”indefinite”(无限次)
转载于:https://www.cnblogs.com/Shinigami/p/10902327.html
canvas和svg相关推荐
- Canvas VS . SVG
SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的.您可以为某个元素附加 JavaScript 事件处理器. 在 SV ...
- HTML5 Canvas、内联 SVG、Canvas vs. SVG
canvas 元素用于在网页上绘制图形. 什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canv ...
- 080_html5 Canvas和SVG
1. Canvas和SVG都允许您在浏览器中创建图形, 但是它们在根本上是不同的. 2. SVG 2.1. SVG是一种使用XML描述2D图形的语言. 2.2. SVG基于XML, 这意味着SVG D ...
- H5中canvas和svg绘图方式介绍
在HTML5中包括了两种绘图方式,canvas和svg(矢量呈现),而与canvas不同的是,svg是一种XML标记语言,它既可以单独保存以".svg"为后缀的文件在浏览器中打开显 ...
- Canvas or SVG?一张好图,两手准备,就在 ECharts 4.0
Canvas 和 SVG 是两大基于浏览器的渲染方案,在选择图表库的时候,用户有时也会在这两者之间纠结.但是纠结的时候,你是否真的明白这两者在哪些方面有优劣? ECharts 4.0 推出 Canva ...
- HTML5 Canvas vs. SVG vs. div
本文翻译自:HTML5 Canvas vs. SVG vs. div What is the best approach for creating elements on the fly and be ...
- canvas webGL SVG 比较
https://blog.csdn.net/Thea12138/article/details/79723380 对每个类型的封装库:https://blog.csdn.net/u010513603/ ...
- html5 svg特性,HTML5新特性——HTML 5 Canvas vs. SVG
Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的. SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个 ...
- HTML画布与SVG(Canvas vs. SVG)
目录 画布(Canvas) 什么是 Canvas? 创建 Canvas 元素 通过 JavaScript 来绘制 理解坐标 更多 Canvas 实例 实例 - 线条 实例 - 圆形 实例 - 渐变 实 ...
- HTML5的图像系统Canvas与SVG
在HTML5之前,没有标准的提供可供Javascript脚本调用的图像系统,以前的做法通常是通过Div来画点.线.矩形这种非常"笨"的办法来变相的绘图,虽然很"笨&quo ...
最新文章
- mysql主从同步默认延迟_减少mysql主从数据同步延迟问题的详解
- linux与windows互传文件、用户与用户组管理、密码配置文件
- 编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。...
- bind merge r 和join_[R] 制作梅西和C罗进球数的quot;追赶动画quot; - ggplot2 + gifski
- OpenGL ARB 看来终于想通了,OpenGL SDK终于要出来了。
- 请各位程序员 正在创业的 正在努力赚钱的 好好看看下面的话
- 计算机网络原理201810自考,2018年10月自考04741计算机网络原理试卷及答案
- HTML5新增的客户端校验
- 练习1.account表 添加一条记录
- Java虚拟机类加载器--双亲委派模型
- 《欲罢不能:刷屏时代如何摆脱行为上瘾》书摘
- 【裴礼文数学分析】例1.2.1
- Hbase的table存储详解
- 沪深股票的复权计算(复权因子的应用)
- iptables中DNAT、SNAT和MASQUERADE
- 【彩虹 钢琴伴奏】笔记
- Androd 基本布局(其一)
- VC 常见的108个问题[转]
- java excel 批注_Java 添加、读取和删除 Excel 批注的操作代码
- 关于C语言的独立(freestanding)和托管(hosted)环境