canvas教程

html5学习——canvas

字号+ 作者:H5之家 来源:H5之家 2015-09-17 11:07 我要评论( )

前言:才简单的学习完一些关于canvas的知识,简单的进行各总结,复习。 canvas,是html5中新增的一个元素,它相当于是在页面上放置了一个

前言:才简单的学习完一些关于canvas的知识,简单的进行各总结,复习。 canvas,是html5中新增的一个元素,它相当于是在页面上放置了一个"画布"。我们可以在这张画布上绘制我们想要的图形及文字。 首先是在页面中绘制一张画布,具体操作如下: canvas id ="c

   前言:才简单的学习完一些关于canvas的知识,简单的进行各总结,复习。

   canvas,是html5中新增的一个元素,它相当于是在页面上放置了一个"画布"。我们可以在这张画布上绘制我们想要的图形及文字。

   首先是在页面中绘制一张“画布”,具体操作如下:

Your browser does not support the canvas element.(如果浏览器不支持canvas,显示本段文字)

   让后将canvas与javascript中的代码进行绑定,具体操作如下:

var canvas = document.getElementById('canvas'); if(canvas == null){ return false; } var context = canvas.getContext('2d');

  其中canvas.getContext(contextID)是方法返回一个用于在画布上绘图的环境。

  参数 contextID 指定了您想要在画布上绘制的类型。当前唯一的合法值是 "2d",它指定了二维绘图,并且导致这个方法返回一个环境对象,该对象导出一个二维绘图 API。

  下面是对canvas对象相关属性及方法进行介绍。

  ① 图形的绘制

  1.矩形的绘制

   矩形的绘制有两种方法一是fill,这是一种实心得绘制,另一种为stroke绘制出的矩形为空心(只具有外边框)。

context.fillRect(x,y,width,height); 绘制实心得矩形 x为起点的横坐标,y为起点的纵坐标,width是这个矩形的宽度,height为这个矩形的高度。 context.strokeRect(x,y,width,height);绘制空心的矩形,参数意义同context.fillRect(x,y,width,height);
fillStyle和strokeStyle分别是对所绘制的矩形的实体和边框的颜色进行设置。
context.rect(x,y,width,height)绘制矩形 context.clearRect(x,y,width,height); 清空给定矩形内的指定像素。具体用法如下:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.fillStyle="red"; ctx.fillRect(0,0,300,150); ctx.clearRect(20,20,100,50);

 2.对圆形的绘制

     context.arc(x,y,r,sAngle,eAngle,counterclockwise);其中x为圆形横坐标,y为圆心纵坐标,r是圆的半径,sAngle起始角,以弧度计(以3点钟的方向为起点),eAngle是圆弧结束的角度,counterclockwise是对顺时针和逆时针进行设置,默认和true为顺时针。

   ②路径

     其中常用的为moveTo(x,y)和lineTo(x,y)

     moveTo(x,y)把路径移动到画布中的指定点,不创建线条。

     lineTo(x,y)添加一个新点,然后在画布中创建从该点到最后指定点的线条。

     beginPath() 方法开始一条路径,或重置当前的路径。请使用这些方法来创建路径:moveTo()、lineTo()、quadricCurveTo()、bezierCurveTo()、arcTo() 以及 arc()。

     closePath() 方法创建从当前点到开始点的路径。

     stroke() 方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色。

     clip()方法从原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。您也可以在使用 clip() 方法前通过使用 save() 方法对当前画布区域进行保存,并在以后的任意时间对其进行恢复(通过 restore() 方法)。

   3.渐变

li1 = context.createLinearGradient(0,0,0,200); li1.addColorStop(0,'black'); li1.addColorStop(0.6,'yellow'); li1.addColorStop(1,'green'); context.fillStyle = li1; context.fillRect(400,0,300,200); li2 = context.createRadialGradient(100,400,100,100,400,50); li2.addColorStop(0,'black'); li2.addColorStop(0.6,'yellow'); li2.addColorStop(1,'green'); context.fillStyle = li2; context.fillRect(0,300,200,200)

  4.图形组合 

     

      context.globalCompositeOperation = type,其中type为以上值;

 5.图片

   首先,引入Image对象

var image = new Image(); image.src = './imgs/xg.jpg';


   strokeText(String, x, y, [maxWidth]);
String为你要绘制的文字,x,y为文字的坐标最后有一个可选参数maxWidth,文字的最大宽度,防止文字在超出长度时,会显示错位。
与绘制基本图形的步骤是一样的,首先要设置字体的样式 : 
    font : 文字字体,依据个人喜好了 
    textAlign : 文字的水平对齐方式,值start(默认),end,left,right,center 
    textBaseline : 文字的垂直对齐方式,值top,hanging,middle,alphabetic(默认),ideographic,bottom 
measureText(String) : 可以获取一个TextMetrices对象,他包含了文字绘制后的宽度
7.其他
save()和restore()

     save()和restore()方法是绘制复杂图形必不可少的方法.它们分别是用来保存和恢复 canvas 状态的,都没有参数。

  Canvas 状态是以堆(stack)的方式保存的,每一次调用 save 方法,当前的状态就会被推入堆中保存起来。这种状态包括:当前应用的变形(即移动,旋转和缩放,见下):

  strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, globalCompositeOperation 的值

  你可以调用任意多次 save 方法。每一次调用 restore 方法,上一个保存的状态就从堆中弹出,所有设定都恢复。



 

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • html5canvas核心技术图形、动画与游戏开发源码

    html5canvas核心技术图形、动画与游戏开发源码

    2017-05-02 17:42

  • 打印html5中Canvas的方法

    打印html5中Canvas的方法

    2017-05-01 15:03

  • HTML5+Canvas调用手机拍照功能实现图片上传(下)

    HTML5+Canvas调用手机拍照功能实现图片上传(下)

    2017-04-30 17:00

  • HTML5新特性详解(三)

    HTML5新特性详解(三)

    2017-04-30 16:03

网友点评