1.canvas画布(位图)

2.绘制矢量图

1.不要在style中给canvas设置宽高 会有位移差

2.

         //获取元素
var c=document.getElementById("c")
//获取绘图环境
var c=c.getContext("2d")

  

fillRect() 绘制一个填充的方块 默认颜色是黑色

strokeRect() 绘制带边框的方块

绘制线条

moveTo() 绘制线段起点

lineTo() 绘制线段的领点

每个线条只能有一个 moveTo可以有多个 lineTo

stroke() 绘制线段

beginPath() closePath() 二者同时出现 将绘制路径闭合(起始点 结尾点首位相连)

Rect() 绘制方块

clearRect(0,0,width,height)清楚画布

save() restore() 二者成对出现 中间属性样式只影响内部,不影响外部

1.画圆

c.closePath()
c.fill()
c.restore()
c.moveTo(200,200)
c.arc(200,200,150,0,360*Math.PI/180,true)
c.stroke()

200,200是圆形坐标 50是半径

0是起始弧度 Math.PI是结束弧度

true是逆时针 flase是顺时针

注意:角度有正负之分 顺时针角度是正的,逆时针角度是负的

2.画布的平移和旋转

平移translate 画布大小位置不变 起始坐标变了

相当于坐标平移

rotate() 画布的旋转都是以00起始点为中心点旋转

scale(0.5,0.5) 画布的缩放 就是将画布向后移动 跟人的视距就变远了 近大远小

c.fillStyle='lightpink'
c.scale(0.5,0.5)
c.fillRect(0,0,100,100)

画布中插入图片 

//获取元素
var c=document.getElementById("c")
//获取绘图环境
var c=c.getContext("2d") var img=new Image; img.src="img/02.jpg"
img.onload=function(){
c.drawImage(img,10,20,160,200)
}

插入字体

//字体大小 样式
c.font="30px imapct"
c.fillText("全站最强",200,200)
//字体空心
c.strokeText("Big smile!",200,200)

svg

svg绘制矢量图

svg使用xml格式绘制图形

svg要有一个根节点 叫svg标签 相当于html

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" cy="50" r="40" stroke="black"
stroke-width="2" fill="red" />
</svg> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500px" height="400px">
</svg>

  

svg如果不设置大小,默认占用面积 3008*150

1.定义矩形

rect标签有:

width height 矩形宽高

fill 定义矩形填充颜色(rgb值、颜色名或16进制)

stroke-width 定义矩形边框宽度

stroke 定义矩形边框以及颜色

x 定义矩形左侧位置(矩形到浏览器窗口左侧距离)

y 定义矩形顶端位置(矩形到浏览器窗口顶端位置)

fill-opacity 定义填充颜色透明度

stroke-opacity 定义边框颜色透明度

Rx Ry 可以使矩形产生圆角

<!--矩形-->
<rect width="100px" height="100px" x="50" y="250" rx="20" ry="20" style="fill:pink;stroke-width: 5;stroke: red;"></rect>

fill-opactty和opacity的区别?

fill-opacity只改变填充颜色透明度 opacity改变fill和stroke的透明度都改变

2.定义圆

circle cx cy 定义圆点的 x和y坐标。如果省略cx和cy,圆的中心会设置为(0,0)

r定义半径

<!--圆形-->
<circle cx="200" cy="200" r="50" style="stroke:"pink"; fill:'red';">
</circle>

3.定义椭圆

椭圆和圆很相似。不同之处在于椭圆有不同的x和y半径,而圆的x和y半径是相同的

ellipse cx cy定义圆中心的x,y坐标

rx 定义水平半径

ry 定义垂直半径

<!--椭圆-->
<ellipse cx="300" cy="340" rx="100" ry="50" style="fill: yellowgreen;"></ellipse>

4.定义直线

line x1 y1 定义起始坐标 x2 y2定义结束坐标 必须结合 stroke

<!----直线---->
<line x1="150" y1="250" x2="100" y2="100" style="stroke: lawngreen;"></line>

5.定义多边形

polygon poinits=“定义多边形每个角x和y坐标”

<!--定义多边形-->
<polygon points="240,10 330,190 290,210" style="fill: pink; stroke: red;">
</polygon>

6.定义曲线(折线)

polyline poinits“折点的坐标”

<!--曲线-->
<polyline points="0,40 40,40 40,80 80,80 80,120 120,120 120,160 "style="stroke-width:5 ; stroke: pink; fill: none; ">

7.定义路径

d=“定义路径指令”

M 是起点坐标

L 是相邻点坐标

Z是让路径构成闭合回路

H代表水平划线 默认y轴上值一模一样

V 代表垂直的线条 默认x轴上值一样

A 后面跟七个值

<!--定义路径-->
<path id="path" d="M100 50 A60 60 0 1 0 300 50 " stroke="red" fill="none"></path>

  

8.g 用于相关元素进行组合

<g fill="pink" stroke="black" cx="60" cy="50" transform="translate(100,50)">
<circle r="30" ></circle>
<circle r="10" fill="blue" ></circle>
</g>

g身上的属性 子元素都会继承 但是g上的属性都必须显现属性,不是svg的私有属性,比如g上的圆心坐标不行

transform 转换svg中的一个属性 translate rotate scale

平移旋转 都是以起点 0 0 (svg的左上角) 点为参考点 而css3中以元素的中心点为参考点

text 用于定义文本 xy xy的值在字体左下角

<!----txte---->
<text stroke="blue" x="400" y="400" font-size="20" text-anchor="middle">哈哈哈哈</text>

9.绘制图片

<!----image---->
<image x="80" y="80" width="100" height="100" xlink:href="02.jpg"></image>

10.use 用于复制元素 xy

xy是相对原始元素的坐标位置 不是相对svg的00点坐标

<!----use---->
<circle cx="40" id="a" cy="40" r="10" translate="100,0" fill="blue"></circle>
<use x="10" y="10" xlink:href="#a"></use>

11.animate 写在需要动画元素的中间

<circle cx="250" cy="310" r="15" fill="lightblue">
<animate attributeName="cy" from="310" to="690" dur="2s" repeatCount="indefinite">
</circle>

  

  

作者:晋飞翔
手机号(微信同步):17812718961
希望本篇文章 能给正在学习 前端的朋友 或 以及工作的朋友 带来收获 不喜勿喷 如有建议 多多提议 谢谢!!!

  

  

 

canvas与svg整理与区别的更多相关文章

  1. HTML5中canvas与SVG有什么区别

    SVG SVG 是一种使用 XML 描述 2D 图形的语言,它基于XML也就是我们可以为某个元素附加JavaScript事件处理器,如果SVG 对象的属性发生变化,那么浏览器能够自动重现图形. Can ...

  2. 范仁义html+css课程---9、video、audio、canvas和svg元素略讲

    范仁义html+css课程---9.video.audio.canvas和svg元素略讲 一.总结 一句话总结: video:HTML5视频标签. audio:html5音频标签. canvas:绘制 ...

  3. 列表总结Canvas和SVG的区别

    参考链接: 菜鸟教程 HTML5 内联SVG 经典面试题(讨论canvas与svg的区别) Canvas | SVG ---|--- 通过 JavaScript 来绘制 2D 图形|是一种使用 XML ...

  4. canvas与svg区别

    canvas与svg区别 和SVG比起来有两个弱点,一个是画布里的内容是独立的,不能当成html元素:二是CANVAS是属于位图格式,而SVG是矢量图,可以平滑放大. HTML5的canvas画出来的 ...

  5. canvas和svg的区别

    讨论关于canvas和svg的区别.首先canvas是html5提供的新元素<canvas>,而svg存在的历史要比canvas久远,已经有十几年了.svg并不是html5专有的标签,最初 ...

  6. 总结Canvas和SVG的区别

    参考链接: 菜鸟教程 HTML5 内联SVG 经典面试题(讨论canvas与svg的区别) Canvas SVG 通过 JavaScript 来绘制 2D 图形 是一种使用 XML 描述 2D 图形的 ...

  7. 前端绘图方式Canvas和SVG的区别

    Canvas和SVG是html5中支持2种可视化技术,都是可以在画布上绘制图形和放入图片.下面来介绍和分析一下他们. 一.Canvas 和 SVG 简介 1.什么是Canvas? Canvas 是H5 ...

  8. canvas、svg、canvas与svg的区别

    一.canvas canvas 画布,位图 <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形 注意:不要在style中给canvas设置宽高,会有位移差 can ...

  9. 【HTML5】Canvas和SVG的区别

    * SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的.您可以为某个元素附加 JavaScript 事件处理器. 在 ...

随机推荐

  1. JVM 启动参数,共分为3类

    JVM 启动参数,共分为3类: 类别 说明 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 非标准参数(-X) 这些参数不是虚拟机规范规定的.因此,不是所有VM的实现(如:H ...

  2. ReportMachine打印条形码的问题

    ReportMachine打印条形码的问题 最近用RM报表来打印条形码,调试过程非常顺利,扫描枪识别也很正常,唯独斑马打印机的走纸不准确是个问题,正好客户不想用这种纸型,并定制了新纸型,心想等新纸型到 ...

  3. WebSocket协议-基础篇

    本篇文章主要讲述以下几点: WebSocket协议出现的背景 WebSocket与HTTP WebSocket API WebSocket协议出现的背景 我们在上网过程中经常用到的是HTTP和HTTP ...

  4. Discarding Game CodeForces - 1250G(思维)

    Discarding Game \[ Time Limit: 3000 ms\quad Memory Limit: 524288 kB \] 题意 一个人和一个电脑在玩游戏,游戏规则是 游戏有 \(n ...

  5. 8.7 NOIP模拟测试14 旋转子段+走格子+ 柱状图

    T1 旋转子段 30% 暴力枚举起点和长度,暴力判断,o(n3)  不知道为什么我拿了40分... 60% 每一个点都有一个固定的旋转中心可以转成固定点,枚举旋转点和长度. 100% 用一个vecto ...

  6. MySQL实战45讲学习笔记:第三十讲

    一.复习一下加锁规则 在第20和21篇文章中,我和你介绍了 InnoDB 的间隙锁.next-key lock,以及加锁规则.在这两篇文章的评论区,出现了很多高质量的留言.我觉得通过分析这些问题,可以 ...

  7. [LeetCode] 839. Similar String Groups 相似字符串组

    Two strings X and Y are similar if we can swap two letters (in different positions) of X, so that it ...

  8. Linux系统运维笔记,CentOS 7.4防火墙配置

    1.查看firewall服务状态 systemctl status firewalld 2.查看firewall的状态 firewall-cmd --state 3.开启.重启.关闭.firewall ...

  9. 团队作业第五次—项目冲刺-Day2

    Day2 part1-SCRUM: 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 hunter--冲刺集合 团队名称 hunte ...

  10. 记一次难忘的排错debug经历(找了5天左右)(涉及内存覆盖)

    strcpy和memcpy都没有处理内存覆盖问题. 函数描述 The memcpy function copies count bytes of src to dest. If the source ...