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 1565 [NOI2009]植物大战僵尸

    Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻. ...

  2. 菜鸡的考场emacs配置

    (setq default-tab-width 4) (setq c-default-style "awk") (setq default-cursor-type 'bar) (e ...

  3. 洛谷 P1306 斐波那契公约数 解题报告

    P1306 斐波那契公约数 题意:求\(Fibonacci\)数列第\(n\)项和第\(m\)项的最大公约数的最后8位. 数据范围:\(1<=n,m<=10^9\) 一些很有趣的性质 引理 ...

  4. 单点登录(七)-----实战-----cas server去掉https验证

    我们在搭建cas中已经说过如果不搭建https证书体系的需要去掉https的验证: 单点登录(二)----实战------简单搭建CAS---测试认证方式搭建CAS 因为cas4.2以上的代码做了一些 ...

  5. 不同tab下的列表长度不同,tab的样式和底部的位置不同

    要求:当点击不同的tab时,被点击的tab样式不同,产生不同的列表.当列表长度大于屏幕高度时,底部随列表显示:当列表长度小于屏幕高度时,底部固定在屏幕的底部. demo: <!DOCTYPE h ...

  6. vim配置高亮显示

    经常使用SecureCRT在linux下修改一些配置文件,使用vi打开总是一个颜色,找起来比较头大. 因为vi不支持高亮,所以需要使用vim. 安装vim:yum install -y vim(ubu ...

  7. python之旅:字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...

  8. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

    1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌 ...

  9. Ansible8:Playbook循环

    目录 1.with_items 2.with_nested嵌套循环 3.with_dict 4.with_fileglob文件匹配遍历 5.with_lines 6.with_subelement遍历 ...

  10. twitter——数据连接

      sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003 ...