html5菜鸟教程canvas笔记

简单介绍:

canvas(图形容器) 标签是一个默认没有边框和内容的矩形画布,并且通过js实现绘制,js脚本先获取标签的id然后进行控制canvas,比如:1.

<canvas id="mycanvas" style=" border:1px solid red" height="200px" width="200px">

</canvas>

 

2.<canvas id="mycanvas" style=" border:1px solid red" height="200px" width="200px">

</canvas>

<script>

var x=document.getElementById("mycanvas"); //通过id来找到对应的<canvas>

var ct=x.getContext("2d");//创建content内容对象

ct.fillStyle="red"; //绘制的颜色为红色

ct.fillRect(0,0,460,460);//x,y,width,height

</script>

 

canvas系统内置的方法属性用法:

属性:

fillStyle:设置或返回用于填充绘画的颜色、渐变或模式。conent.fillStyle="颜色,渐变";

strokeStyle:设置或返回用于笔触的颜色、渐变或模式。context.strokeStyle="颜色,渐变";

shadowColor:设置或返回用于阴影的颜色。context.shadowColor="颜色";

shadowBlur:设置或返回用于阴影的模糊级别。context.shadowBlur=数字;

shadowOffsetX:设置或返回阴影与形状的水平距离。context.shadowOffsetX=数字;

shadowOffsetY:设置或返回阴影与形状的垂直距离。context.shadowOffsetY=数字;

lineCap:设置或返回线条的结束端点样式。context.lineCap="butt|round|square";默认,向线条的每个末端添加平直的边缘 \ 向线条的每个末端添加圆形线帽。\向线条的每个末端添加正方形线帽。

lineJoin:设置或返回两条线相交时,所创建的拐角类型。context.lineJoin="bevel|round|miter";创建斜角。创建圆角。

默认。创建尖角。

lineWidth:设置或返回当前的线条宽度。context.lineWidth=number;

miterLimit :设置或返回最大斜接长度。context.miterLimit=number;

font:设置或返回文本内容的当前字体属性context.font="italic small-caps bold 12px arial";

textAlign :设置或返回文本内容的当前对齐方式。context.textAlign="center|end|left|right|start";

start默认。文本在指定的位置开始。end文本在指定的位置结束。center文本的中心被放置在指定的位置。left文本在指定的位置开始。right文本在指定的位置结束。

 textBaseline:设置或返回在绘制文本时使用的当前文本基线。context.textBaseline="alphabetic|top|hanging|middle|ideographic|bottom";alphabetic默认。文本基线是普通的字母基线。top文本基线是 em 方框的顶端。hanging文本基线是悬挂基线。middle文本基线是 em 方框的正中。ideographic文本基线是表意基线。bottom文本基线是 em 方框的底端。

width:返回 ImageData 对象的宽度。imgData.width;

height :返回 ImageData 对象的高度。imgData.height;

data:返回一个对象,其包含指定的 ImageData 对象的图像数据。imageData.data;

globalAlpha:设置或返回绘图的当前 alpha 或透明值。context.globalAlpha=number;

 globalCompositeOperation:设置或返回新图像如何绘制到已有的图像上。context.globalCompositeOperation="source-in";source-over默认。在目标图像上显示源图像

source-atop在目标图像顶部显示源图像源图像位于目标图像之外的部分是不可见的。

source-in在目标图像中显示源图像。只有目标图像之内的源图像部分会显示,目标图像是透明的。

source-out在目标图像之外显示源图像。只有目标图像之外的源图像部分会显示,目标图像是透明的。

destination-over在源图像上显示目标图像。destination-atop在源图像顶部显示目标图像目标图像位于源图像之外的部分是不可见的。

destination-in在源图像中显示目标图像。只有源图像之内的目标图像部分会被显示,源图像是透明的。

destination-out在源图像之外显示目标图像。只有源图像之外的目标图像部分会被显示,源图像是透明的。

lighter显示源图像 + 目标图像。copy显示源图像。忽略目标图像。xor使用异或操作对源图像目标图像进行组合。

 

 

方法:

createLinearGradient():创建线性渐变(用在画布内容上)context.createLinearGradient(x0,y0,x1,y1);x0渐变开始点的 x 坐标      y0渐变开始点的 y 坐标          x1渐变结束点的 x 坐标        y1渐变结束点的 y 坐标

createPattern():在指定的方向上重复指定的元素。context.createPattern(image,"repeat|repeat-x|repeat-y|no-repeat");image规定要使用的模式的图片、画布或视频元素。 

repeat默认。该模式在水平和垂直方向重复。

repeat-x该模式只在水平方向重复。

repeat-y该模式只在垂直方向重复。

no-repeat该模式只显示一次(不重复)

createRadialGradient() :创建放射状/环形的渐变(用在画布内容上)。context.createRadialGradient(x0,y0,r0,x1,y1,r1);

x0渐变的开始圆的 x 坐标

y0渐变的开始圆的 y 坐标

r0开始圆的半径

x1渐变的结束圆的 x 坐标

y1渐变的结束圆的 y 坐标

r1结束圆的半径

 

addColorStop():规定渐变对象中的颜色和停止位置。gradient.addColorStop(stop,color);

stop介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。

color在 stop 位置显示的 CSS 颜色值

rect():创建矩形。context.rect(x,y,width,height);

fillRect():绘制"被填充"的矩形。context.fillRect(x,y,width,height);

strokeRect():绘制矩形(无填充)。context.strokeRect(x,y,width,height);

clearRect() :在给定的矩形内清除指定的像素。context.clearRect(x,y,width,height);

 fill():填充当前绘图(路径)。context.fill();

stroke():绘制已定义的路径。context.stroke();绘制出通过 moveTo() 和 lineTo() 方法定义的路径

 beginPath() :起始一条路径,或重置当前路径。context.beginPath();请使用这些方法来创建路径 moveTo()、lineTo()、quadricCurveTo()、bezierCurveTo()、arcTo() 和 arc()。

moveTo() :把路径移动到画布中的指定点,不创建线条(起点)。context.moveTo(x,y);请使用 stroke() 方法在画布上绘制确切的路径。

closePath():创建从当前点回到起始点的路径。context.closePath();请使用 stroke() 方法在画布上绘制确切的路径。

lineTo() :添加一个新点,然后在画布中创建从该点到最后指定点的线条。context.lineTo(x,y);请使用 stroke() 方法在画布上绘制确切的路径。

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

 quadraticCurveTo():创建二次贝塞尔曲线。context.quadraticCurveTo(cpx,cpy,x,y);cpx贝塞尔控制点的 x 坐标。

cpy贝塞尔控制点的 y 坐标。

x结束点的 x 坐标。

y结束点的 y 坐标。

那么请使用 beginPath() 和 moveTo() 方法来定义开始点。

bezierCurveTo():创建三次贝塞尔曲线。context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);

cp1x第一个贝塞尔控制点的 x 坐标。

cp1y第一个贝塞尔控制点的 y 坐标。

cp2x第二个贝塞尔控制点的 x 坐标。

cp2y第二个贝塞尔控制点的 y 坐标。

x结束点的 x 坐标。

y结束点的 y 坐标。

那么请使用 beginPath() 和 moveTo() 方法来定义开始点。

arc() :创建弧/曲线(用于创建圆形或部分圆)。context.arc(x,y,r,sAngle,eAngle,counterclockwise);

x圆的中心的 x 坐标。

y圆的中心的 y 坐标。

r圆的半径。

sAngle起始角,以弧度计(弧的圆形的三点钟位置是 0 度)。

eAngle结束角,以弧度计。

counterclockwise可选。规定应该逆时针还是顺时针绘图。False = 顺时针,true = 逆时针。

提示:如需通过 arc() 来创建圆,请把起始角设置为 0,结束角设置为 2*Math.PI。

提示:请使用 stroke() 或 fill() 方法在画布上绘制实际的弧。

arcTo() :创建两切线之间的弧/曲线。context.arcTo(x1,y1,x2,y2,r);x1两切线交点的横坐标。

y1两切线交点的纵坐标。

x2第二条切线上一点的横坐标。

y2第二条切线上一点的纵坐标。

r弧的半径。

arcTo() 方法在画布上创建介于两个切线之间的弧/曲线。

提示:请使用 stroke() 方法在画布上绘制确切的弧。

isPointInPath():如果指定的点位于当前路径中,则返回 true,否则返回 false。context.isPointInPath(x,y);

scale():缩放当前绘图至更大或更小。context.scale(scalewidth,scaleheight);

scalewidth缩放当前绘图的宽度(1=100%,0.5=50%,2=200%,依次类推)。

scaleheight缩放当前绘图的高度(1=100%,0.5=50%,2=200%,依次类推)。

rotate() :旋转当前绘图。context.rotate(angle);angle旋转角度,以弧度计。

如需将角度转换为弧度,请使用 degrees*Math.PI/180 公式进行计算。

实例:如需旋转 5 度,可规定下面的公式:5*Math.PI/180。

translate():重新映射画布上的 (0,0) 位置。context.translate(x,y);

transform():替换绘图的当前转换矩阵。context.transform(a,b,c,d,e,f);a水平缩放绘图。

b水平倾斜绘图。

c垂直倾斜绘图。

d垂直缩放绘图。

e水平移动绘图。

f垂直移动绘图。

setTransform():将当前转换重置为单位矩阵。然后运行 transform()。context.setTransform(a,b,c,d,e,f)a水平缩放绘图。

b水平倾斜绘图。

c垂直倾斜绘图。

d垂直缩放绘图。

e水平移动绘图。

f垂直移动绘图

fillText():在画布上绘制"被填充的"文本。context.fillText(text,x,y,maxWidth);text规定在画布上输出的文本。

x开始绘制文本的 x 坐标位置(相对于画布)。

y开始绘制文本的 y 坐标位置(相对于画布)。

maxWidth可选。允许的最大文本宽度,以像素计。

strokeText() :在画布上绘制文本(无填充)。context.strokeText(text,x,y,maxWidth);

text规定在画布上输出的文本。

x开始绘制文本的 x 坐标位置(相对于画布)。

y开始绘制文本的 y 坐标位置(相对于画布)。

maxWidth可选。允许的最大文本宽度,以像素计。

measureText() :返回包含指定文本宽度的对象。context.measureText(text).width;

drawImage() :向画布上绘制图像、画布或视频。

在画布上定位图像:

JavaScript 语法:context.drawImage(img,x,y);

在画布上定位图像,并规定图像的宽度和高度:

JavaScript 语法:context.drawImage(img,x,y,width,height);

剪切图像,并在画布上定位被剪切的部分:

JavaScript 语法:context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

img规定要使用的图像、画布或视频。 

sx可选。开始剪切的 x 坐标位置。

sy可选。开始剪切的 y 坐标位置。

swidth可选。被剪切图像的宽度。

sheight可选。被剪切图像的高度。

x在画布上放置图像的 x 坐标位置。

y在画布上放置图像的 y 坐标位置。

width可选。要使用的图像的宽度(伸展或缩小图像)。

height可选。要使用的图像的高度(伸展或缩小图像)。

 createImageData():创建新的、空白的 ImageData 对象。

有两个版本的 createImageData() 方法:

1. 以指定的尺寸(以像素计)创建新的 ImageData 对象:

JavaScript 语法:var imgData=context.createImageData(width,height);

2. 创建与指定的另一个 ImageData 对象尺寸相同的新 ImageData 对象(不会复制图像数据):

JavaScript 语法:var imgData=context.createImageData(imageData);

widthImageData 对象的宽度,以像素计。

heightImageData 对象的高度,以像素计。

imageData另一个 ImageData 对象。

getImageData():返回 ImageData 对象,该对象为画布上指定的矩形复制像素数据。

context.getImageData(x,y,width,height);x开始复制的左上角位置的 x 坐标(以像素计)。

y开始复制的左上角位置的 y 坐标(以像素计)。

width要复制的矩形区域的宽度。

height要复制的矩形区域的高度。

putImageData() :把图像数据(从指定的 ImageData 对象)放回画布上。context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight);imgData规定要放回画布的 ImageData 对象。

xImageData 对象左上角的 x 坐标,以像素计。

yImageData 对象左上角的 y 坐标,以像素计。

dirtyX可选。水平值(x),以像素计,在画布上放置图像的位置。

dirtyY可选。垂直值(y),以像素计,在画布上放置图像的位置。

dirtyWidth可选。在画布上绘制图像所使用的宽度。

dirtyHeight可选。在画布上绘制图像所使用的高度。

save():保存当前环境的状态。

restore():返回之前保存过的路径状态和属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值