一:canvas

1:概述:

  canvas是H5提供的新标签,其最强大的作用是进行2D图形的绘制,canvas标签仅仅作为绘制图形的载体,它本身并不具备绘制图形的能力,我们是通过canvas元素的自身的一个对象进行绘制图形的。目前提供的也有3D功能,但是只有极少数的浏览器支持,一般不用3D。canvas中的坐标系是平面的。

2:canvas绘制路径

 绘制的步骤:

 (1):获取canvas元素

    var canvas = document.getElementById("canvas");

 (2):获取2D渲染上下文对象(核心)

    var content=canvas.getContext("2d");

 (3):绘制路径

    content.beginPath();//开始路径

content.moveTo(0,0);//设置起点

content.lineTo(300,400);//设置下一个点

content.closePath();//结束路径

content.stroke();//绘制路径

3:设置canvas宽高的方式:

 (1):直接在标签内设置宽高属性

    <body>

<canvas id="canvas" width="500" height="500">

您的浏览器不支持Canvas,请升级浏览器

</canvas>

           </body>

 (2):通过js修改宽高

    canvas.width=500;

            canvas.height=500;

注意:不要用css设置宽高,容易导致图形变形

4:moveTo:创建一条新的子路径

  lineTo:沿着已有的子路径继续划线,会记录下添加的最后一个点的坐标信息,不断更新子路径的新坐标

   closePath:闭合路径,链接最后一个点的位置与起点的位置

   lineWidth:线宽,单位是数字,表示像素,位置在描边之前都可以,默认值是1

5:canvas绘制图形有两种:

 (1):绘制路径

 (2):绘制图形

   a:描边图形,带有stroke单词的属性或者方法

   b:填充图形,带有fill单词的属性或者方法

6:(1)描边样式:strokeStyle

 可以接受三种类型的值:

a:颜色值:十六进制的颜色、rgb、rgba、 颜色单词;

b:用于填充图形的渐变对象

c:用于填充图形的pattern对象

  (2)填充样式:fillStyle

    可接受的参数与描边一样

  content.strokeStyle = "blue"; //画笔的颜色

content.fillStyle=“aqua";//填充的颜色

注意:所有有关的样式一旦设置会影响其他所有的绘制图形,描边和填充的样式如果不设置颜色默认都是黑色。

7:绘制矩形的方法:

(1):strokeRect(x,y,w,h);绘制的矩形不填充颜色

  (2):fillRect(x,y,w,h);绘制已经填充颜色的矩形,默认颜色是黑色

  四个参数:

    x,y:要绘制的矩形的左上的点相对于canvas元素的位置;

    w,h:矩形的宽高;

8:绘制文字

 (1):font属性:倾斜,文字大小,字体类型(宋体,黑体,stkaiti,)

 (2):textAlign:设置文本在水平当向上的距离起点的位置

    start:(默认值),文本的左下角距离起点的位置

           center:文本的下边缘的中心位置距离起点的位置

end:文本的右下角距离起点的位置

(3):fillText(txt,x,y,maxWidth)

    四个参数:txt:绘制的文本

         x,y:绘制的位置

         maxWidth:允许文本的最大宽度(一般不设置)

注意:默认情况下,文字大小10px,默认字体类型:sans-serif,不倾斜

9:绘制圆

  绘制圆的方法:       arc(x,y,radius,startAngle,endAngle,counterclockwise)

参数: x,y:圆心位置

radius:半径

startAngle:开始位置

endAngle:结束位置

counterclockwise:是否逆时针绘制(true:逆时针绘制;false:顺时针绘制)

注意:开始位置和结束位置上的值是弧度

π=180度

Math.PI 是JS提供的弧度值,等于π

ps:最后一个参数可以省略,默认为顺时针,但是建议不要省略,如果没有最后一个参数,在火狐的低版本浏览器下会报错

10:设置阴影

 (1):shadowBlur  数值,也代表阴影的大小,值越大,越模糊,默认值为0模糊程度

    content.shadowBlur = 10;

 (2):设置阴影X轴偏移量  数值,(正:向左,负:向右)

    content.shadowOffsetX = 5;

 (3):设置阴影Y轴偏移量  数值,(正:向下,负:向上)

    content.shadowOffsetY = 5;

 (4):设置阴影的颜色 默认是透明

    content.shadowColor = “black";

11:擦除

(1):方式一:content.clearRect(x,y,width,height);

  参数:x,y:擦书的位置

width,height:擦除的区域大小

  可以灵活控制擦除区域的大小

(2):方式二:直接重置canvas元素的宽和高

两种方式的区别:clear方法清除指定区域的内容会保留样式,但重置宽高会清除canvas上所有的内容,不会保留之前设置的样式

12:保存与恢复:

  canvas中保存与恢复的行为类似于数据入栈出栈的过程

 (1):保存的方法:save();

    保存绘图状态,将图形保存到绘图状态栈里(先进后出),每调用一次save,就会向栈中添加新的状态

 (2):恢复的方法:restore();

    恢复绘图的状态,图形一旦出栈,栈中就不在保存该状态

注意:一般情况下save次数 >= restore次数

canvas画布01相关推荐

  1. HTML5 API详解(12):canvas画布API提供的内容很丰富啊~

    不考虑代码质量的话,一般来说css3>canvas>纯js. 1. css3动画是独立与js线程的,js的运算操作不会阻塞css3的动画,所以在系统cpu占用率较高的时候,css3的动画性 ...

  2. s时钟画布 android,Canvas画布实现自定义时钟效果

    标题 *{margin:0; padding:0; list-style:none;} .box{ width: 420px; height: 420px; margin: 50px auto 0; ...

  3. three - 3 - 基础知识(1. three渲染结构,2.对canvas 进行响应式布局,3.让canvas 画布自适应设备分辨率 )

    本章节分为3点: 理解three.js 的渲染结构 对canvas 进行响应式布局 让canvas 画布自适应设备分辨率 canvas 画布的css尺寸和像素尺寸 1.three.js 的渲染结构 接 ...

  4. 从0开始canvas系列一 --- canvas画布

    从0开始canvas系列 从0开始canvas系列一 - canvas画布 从0开始canvas系列二 - 文本和图像 从0开始canvas系列三 - 图像像素级操作 从0开始canvas系列四 - ...

  5. H5 canvas画布总结 (绘制哆啦A梦)

    canvas标签 只是图形容器定义图形,使用 canvas 绘制路径,盒.圆.字符以及添加图像 1.创建一个画布 <canvas id='cv' width='400px' height='60 ...

  6. js实现图片虚化_js canvas画布实现高斯模糊效果

    最近项目中有一个需求是实现图片的局部模糊效果,看上去一个挺难的效果.在实现局部模糊效果前,首先能够实现全部模糊.经过和度娘的一番较劲后,找到了一个不错的案例,然后在他的基础上,经过一番修改,和备注,实 ...

  7. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  8. js将文字填充与canvas画布再转为图片

    需求:封装consul服务的webUI: 原因:展示consul的服务信息时,需要嵌套动画,由于其没有内置的icon,所以将服务name放于图片位: 分析:展示信息时采用了卡片式的服务布局,缩放式的服 ...

  9. 前端实现可绘制的canvas画布_前端图形学基础(五)——Canvas状态管理

    点击右上角的关注,不定期前端干货分享!! 欢迎来到我的前端图形学系列文章: 前端图形学基础(一)--Canvas基础入门 前端图形学基础(二)--Canvas基础 前端图形学基础(三)--Canvas ...

最新文章

  1. 怎么把加载图标去掉_怎样在PCB上绘制图标
  2. 使用ImageIO.write上传二维码文件时候,提示系统找不到指定路径
  3. OpenStack手动制作CentOS 7 KVM镜像
  4. 曲线积分和曲面积分及其几何应用、物理应用
  5. c语言 16进制编辑器,十六进制编辑器(010editor)最新下载
  6. 高仿微信表情控件 -- LQREmojiLibrary
  7. dell电脑装双系统linux,戴尔电脑怎么装双系统?戴尔装win7+win10双系统详细教程
  8. 裁剪算法——中点分割算法/Liang-Barsky算法
  9. 网友心中的高分电影合集,大家一起来拯救剧荒!欢迎补充!!!
  10. 网络爬虫技术是什么,网络爬虫的基本工作流程是什么?
  11. matlab floor函数用法,matlab中fix, floor, ceil, round 函数的使用方法
  12. Elasticsearch面试专题总结
  13. 视频直播声音不清晰的解决办法(小蜜蜂无线麦克风使用方式)
  14. CentOS7系统安装
  15. CocosCreator之属性装饰器
  16. linux学习34-运维自动化之ANSIBLE
  17. 列表框和组合框的使用
  18. 运营商大数据获客 企业“起死回生”代名词
  19. spwm调制仿真matlab,三相SPWM逆变器的调制建模和仿真详解
  20. 射频集成电路芯片原理与应用电路设计

热门文章

  1. 大数据【学习计划 or 复习计划】根据【云和 + 达内 + 千锋】课程内容整理
  2. 文章照片等数字资源版权自我保护方法
  3. Nor/Nand/OneNand Flash
  4. html文件自动批阅器怎么设计,只要这样做,就可以实现自动批阅试卷了
  5. 2017中国网络安全大会,安普诺创始人就WebShell检测做分享
  6. DNV Phast Safeti v8.71 With KFX v3.82 Win64 软件发布
  7. 游戏外挂原理解析与制作 - [内存数值修改类 篇四]
  8. html 翻页效果,JavaScript实现翻页功能(附效果图)
  9. JAVA毕设项目翔隆生鲜超市进货管理系统(java+VUE+Mybatis+Maven+Mysql)
  10. Linux赛车游戏 SuperTuxKart 1.0 正式发布