Canvas画布

1.绘图方法

ctx.moveTo(x,y) 落笔
ctx.lineTo(x,y) 连线
ctx.stroke() 描边

ctx.beginPath(); 开启新的图层

演示: strokeStyle="值"
线宽: linewidth="值" 备注:不需要带单位

线连接方式: lineJoin: round | bevel | miter (默认)

线帽(线两端的结束方式): lineCap: butt(默认值) | round | square

闭合路径: ctx.closePath()

☞ 线性渐变
   var grd=ctx.createLinearGradient(x0,y0,x1,y1);
      x0-->渐变开始的x坐标
      y0-->渐变开始的y坐标 
  x1-->渐变结束的x坐标
  y1-->渐变结束的y坐标
 
  grd.addColorStop(0,"black"); 设置渐变的开始颜色
  grd.addColorStop(0.1,"yellow"); 设置渐变的中间颜色
  grd.addColorStop(1,"red"); 设置渐变的结束颜色
    ctx.strokeStyle=grd;
  ctx.stroke();
 
备注:
   addColorStop(offse,color);
  中渐变的开始位置和结束位置介于0-1之间,0代表开始,1代表结束。中间可以设置任何小数
 
☞ 径向渐变
 
   ctx.createradialGradient(x0,y0,r0,x1,y1,r1);
   (x0,y0):渐变的开始圆的 x,y 坐标
   r0:开始圆的半径
   (x1,y1):渐变的结束圆的 x,y 坐标
   r1:结束圆的半径
 
填充效果
  ctx.fill();  设置填充效果
  ctx.fillstyle="值"; 设置填充颜色
 
非零环绕原则 【两个图是反向的】
  1. 任意找一点,越简单越好
    2. 以点为圆心,绘制一条射线,越简单越好(相交的边越少越好)
      3. 以射线为半径顺时针旋转,相交的边同向记为+1,反方向记为-1,如果相加的区域等于0,则不填充。
      4. 非零区域填充
 
绘制虚线
 
  原理:
    设置虚线其实就是设置实线与空白部分直接的距离,利用数组描述其中的关系
    例如: [10,10] 实线部分10px 空白部分10px
    例如: [10,5] 实线部分10px 空白部分5px
    例如: [10,5,20] 实线部分10px 空白5px 实线20px 空白部分10px 实线5px 空白20px....
    绘制:
      ctx.setLineDash(数组);
      ctx.stroke();
 
  例如:
      ctx.moveTo(100, 100);
        ctx.lineTo(300, 100);
        ctx.setLineDash([2,4]);
        ctx.stroke();
  注意:  
    如果要将虚线改为实线,只要将数组改为空数组即可。
 
绘制动画效果
  ☞ 绘制一个描边矩形: content.strokeRect(x,y,width,height)
  ☞ 绘制一个填充矩形: content.fillRect(x,y,width,height)
  ☞ 清除:     content.clearRect(x,y,width,height)
 
 
  ☞ 实现动画效果:
      1. 先清屏
      2. 绘制图形
      3. 处理变量
 
绘制文本
 
  ☞ 绘制填充文本
     content.fillText(文本的内容,x,y)
 
  ☞ 绘制镂空文本
     content.strokeText();
  
  ☞ 设置文字大小:
     content.font="20px 微软雅黑"
    备注: 该属性设置文字大小,必须按照cssfont属性的方式设置
  
  ☞ 文字水平对齐方式【文字在圆心点位置的对齐方式】
      content.textalign="left | right | center"
 
  ☞文字垂直对齐方式
       content.textBaseline="top | middle | bottom | alphabetic(默认)"
 
  ☞文字阴影效果
        ctx.shadowColor="red"; 设置文字阴影的颜色
    ctx.ShadowOffsetX=值; 设置文字阴影的水平偏移量
    ctx.shadowOffsetY=值; 设置文字阴影的垂直偏移量
    ctx.shadowBlur=值; 设置文字阴影的模糊度
 
绘制图片
  ☞
   //将图片绘制到画布的指定位置
   content.drawImage(图片对象,x,y);
  ☞
     //将图片绘制到指定区域大小的位置 x,y指的是矩形区域的位置,width和height指的是矩形区域的大小
   content.drawImage(图片对象,x,y,width,height);
 
  ☞
     //将图片的指定区域绘制到指定矩形区域内
   content.drawImage(图片对象,sx,sy,swidth,sheight,dx,dy,dwidth,dheight);
    sx,sy 指的是要从图片哪块区域开始绘制,swidth,sheight 是值 截取图片区域的大小
         dx,dy 是指矩形区域的位置,dwidth,dheight是值矩形区域的大小
 
  ☞
     解决图片绘制到某一个区域的按原比例缩放绘制:
   绘制宽:绘制高==原始宽:原始高
 
绘制圆弧
 
    特殊值
    0度 = 0弧度
    30度 = π/6 (180度的六分之一)
    45度 = π/4
    60度 = π/3
    90度 = π/2
    180度 = π
    360度 = 2π
 
 
  ☞ 绘制圆上任意点:  
      公式:
      x=ox+r*cos( 弧度 )
      y=oy+r*sin( 弧度 )
      ox: 圆心的横坐标
      oy: 圆心的纵坐标
      r: 圆的半径
 
平移【坐标系圆点的平移】
  ctx.translate(x,y);
  特点:
    通过该方法可以将原点的位置进行重新设置。
  注意:
    1. translate(x,y) 中不能设置一个值
    2. 与moveTo(x,y) 的区别:
    moveTo(x,y) 指的是将画笔的落笔点的位置改变,而坐标系中的原点位置并没有发生改变
    translate(x,y) 是将坐标系中的原点位置发生改变
 
旋转【坐标系旋转】
 
  ctx.rotate(弧度)
 
 
伸缩
  ctx.scale(x,y)
 
  备注:
    沿着x轴和y轴缩放
    x,y 为倍数 例如: 0.5 1

html5学习之canvas的更多相关文章

  1. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

  2. HTML5学习(四)---Canvas绘图

    参考教程地址:http://www.w3school.com.cn/html5/html_5_canvas.asp canvas 元素用于在网页上绘制图形. 什么是 Canvas? HTML5 的 c ...

  3. html5学习(一)--canvas画时钟

    利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...

  4. [html5] 学习笔记-Canvas应用

    通过使用HTML5游戏开发的引擎CreatJS,创建HTML5 Canvas上的更好交互. 1.认识CreateJS CreateJS是一个外部库,用它可以比Canvas更方便的绘制图形. 官网:ht ...

  5. [html5] 学习笔记-Canvas 绘制渐变图形与绘制变形图形

    在 HTML5 中,使用 Canvas API 绘制图形的知识,可以对绘制图形进行处理,包含使用 Canvas API 绘制渐变图形,使用 Canvas API 的坐标轴变换处理功能绘制变形图形.其中 ...

  6. [html5] 学习笔记-Canvas标签的使用

    Canvas通过JavaScript来绘制2D图形.Canvas是逐像素渲染的.在Canvas中,一旦图形被绘制完成,它就不会继续得到浏览器的关注.如果其位置发生变化,那么整个场景也需要重新绘制,包括 ...

  7. HTML5学习(六)---------SVG 与Canvas

    参考教程:http://www.w3school.com.cn/html5/html_5_canvas_vs_svg.asp Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不 ...

  8. HTML5 学习总结(一)——HTML5概要与新增标签

    一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电.触摸 ...

  9. HTML5 学习笔记(一)——HTML5概要与新增标签

    目录 一.HTML5概要 1.1.为什么需要HTML5 1.2.什么是HTML5 1.3.HTML5现状及浏览器支持 1.4.HTML5特性 1.5.HTML5优点与缺点 1.5.1.优点 1.5.2 ...

随机推荐

  1. 【刷题】BZOJ 1061 [Noi2008]志愿者招募

    Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完 ...

  2. js关闭当前页面窗口的问题

    有两种情况,如果当前页面窗口是由js代码打开的,那么可以直接用js关闭该窗口 如: window.close(); 如果该页面是由用户输入地址直接进去的,直接close是会无效的,此时需要这样做: w ...

  3. 【CF938G】Shortest Path Queries(线段树分治,并查集,线性基)

    [CF938G]Shortest Path Queries(线段树分治,并查集,线性基) 题面 CF 洛谷 题解 吼题啊. 对于每个边,我们用一个\(map\)维护它出现的时间, 发现询问单点,边的出 ...

  4. BZOJ3522 [Poi2014]Hotel 【树形dp】

    题目链接 BZOJ3522 题解 就是询问每个点来自不同子树离它等距的三个点的个数 数据支持\(O(n^2)\),可以对每个距离分开做 设\(f[i][j]\)表示\(i\)的子树中到\(i\)距离为 ...

  5. linux内核设计与实现一书阅读整理 之第三章

    chapter 3 进程管理 3.1 进程 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 内核调度的对象是线程而并非进程. 在现代操作系统中,进程提供两种虚拟机制: 虚拟处理器 ...

  6. SSM的整合

    框架的整合: 1. 依赖整合 aop的包: aspectweaver spring-aop spring核心: spring-context spring-web spring-webmvc spri ...

  7. Android字体设置

    // 自定义字体custom = new TextView(this);//xx.ttf located at assets/fonts/typeface = Typeface.createFromA ...

  8. 网络中,FIFO、LRU、OPT这三种置换算法的缺页次数

    FIFO.LRU.OPT这三种置换算法的缺页次数 转载  由于要考计算机四级网络,这里遇到了问题,就搜了一些资料来解疑. 考虑下述页面走向: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3 ...

  9. ubuntu thrift

    1.下载 http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.2/thrift-0.9.2.tar.gz 2.解压 tar -xvf thrif ...

  10. python的if条件语句的语法和案例

    1.条件语句 缩进用4个空格 if条件: #条件成功, else: #条件不成功 if条件:{ #条件成功, #条件成功, }else{ #条件不成功, #条件不成功, } if的语法就是这样或者是用 ...