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. python 求两个时间差

    def timeInterval(self): today = datetime.date.today() print today modifiedTime = os.stat(filename).s ...

  2. 安装linux系统后调优及安全设置

    环境说明: [root@server1 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@server1 ~]# uname - ...

  3. digitalworld.local: MERCY靶机入侵

    0x01 前言 MERCY是一个致力于PWK课程安全的靶机系统.MERCY是一款游戏名称,与易受攻击的靶机名称无关.本次实验是攻击目标靶机获取root权限并读系统目录中的proof.txt信息 靶机的 ...

  4. Android中EditText显示明文与密码的两种方式

    效果图如下所述: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...

  5. 解题:SHOI 2012 回家的路

    题面 完了,做的时候已经想不起来分层图这个东西了QAQ 对于这种“多种”路径加中转站的题,还有那种有若干次“特殊能力”的题,都可以考虑用分层图来做 显然只需要记录所有的中转站+起点终点,然后拆出横竖两 ...

  6. 【纪中集训2019.3.23】Deadline

    题意 描述 一个二分图\((A,B)\),每个点额外有一个颜色0或者1: 匹配时,只能相同颜色的点匹配: 给出\(A\)中的颜色,问如何分配\(B\)种的颜色使得\((A,B)\)的最大匹配最小: 范 ...

  7. Docker多主机网络 OpenvSwitch

    一.Open vSwitch    Open vSwitch(以下简称为OVS),英文全称:OpenVirtual Switch,顾名思义,Open vSwitch就是开放虚拟交换.我们可以把他理解成 ...

  8. a标签--超链接

    一.链接到其他网站 <body> <a href="https://www.baidu.com" target="_blank">百度& ...

  9. Window10+Python3.5安装opencv

    Window10+Python3.5安装opencv 标签: opencvpython 2017-05-14 16:47 2201人阅读 评论(0) 收藏 举报  分类: Python编程(41)  ...

  10. JS获取FckEditor的值

    不需要在页面引用任何额外的JS文件 //获取编辑器中HTML内容 function getEditorHTMLContents(EditorName) { var oEditor = FCKedito ...