ǰλã >> Webǰ >> canvas的主要方法(
  ϸ

canvas的主要方法(

ȶȣ753   ʱ䣺2014-02-21 00:12:22.0
canvas的主要方法(3?

定义和用?/h2>

getImageData() 方法返回 ImageData 对象,?对象拷贝了画布指定矩形的像素数据?/p>

对于 ImageData 对象?每个像素,都存在?方面的信??RGBA 值:

  • R - 红色 (0-255)
  • G - 绿色 (0-255)
  • B - 蓝色 (0-255)
  • A - alpha 通道 (0-255; 0 ??明的?55 ?全可见的)

color/alpha 以数组形式存?并存储于 ImageData 对象的?a title="HTML canvas data 属? href="http://www.w3school.com.cn/html5/canvas_imagedata_data.asp" style="margin: 0px; padding: 0px; border: 0px; text-decoration: underline; color: #900b09; background-color: transparent;">data 属???/p>

提示:在操作完成数组? color/alpha 信息之后,您?使用 putImageData() 方法将图像数?贝回画布上?/p>

例子?/h3>

以下代码?得?返回?ImageData 对象???像素?color/alpha 信息?/p>

red=imgData.data[0];
green=imgData.data[1];
blue=imgData.data[2];
alpha=imgData.data[3];

亲自试一?/a>

提示:您也可以使?getImageData() 方法来反?布上某个图像的每?素的颜色?/p>

使用该公式遍历所有的像素,并改变其?色??/p>

red=255-old_red;
green=255-old_green;
blue=255-old_blue;

(?见下面的“亲??”实例??/p>

JavaScript ?

var imgData=context.getImageData(x,y,width,height);//在指定的区域取回像素

参数?/h3> 参数 描述
x ??复制的左上?位置?x 坐标?/td>
y ??复制的左上?位置?y 坐标?/td>
width 将?复制的矩形区域的宽度?/td>
height 将?复制的矩形区域的高度?/td>

 

 

定义和用?/h2>

putImageData() 方法将图像数?从指定的 ImageData 对象)放回画布上?/p>

提示:?参阅 getImageData() 方法,它??制画布上指定的矩形的像素数据?/p>

提示:?参阅 createImageData() 方法,它?建新的空?ImageData 对象?/p>

JavaScript ??/h3>
context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight);与getImageData??应的

参数?/h3> 参数 描述
imgData 规定要放回画布的 ImageData 对象?/td>
x ImageData 对象左上角的 x 坐标,以像素计?/td>
y ImageData 对象左上角的 y 坐标,以像素计?/td>
dirtyX ??。水平?(x),以像素?,在画布上放?像的位置?/td>
dirtyY ??。水平?(y),以像素?,在画布上放?像的位置?/td>
dirtyWidth ??。在画布上绘制图像所使用的?度?/td>
dirtyHeight ??。在画布上绘制图像所使用的高度?/td>

 

 

 

定义和用?/h2>

globalAlpha 属?设置或返回绘图的当前透明值(alpha ?transparency)?/p>

globalAlpha 属?值必须是介于 0.0(完全?明??1.0(不透明?之间的数字?/p>

默?值: JavaScript ??
1.0
context.globalAlpha=number;//设置透明?/td>

属??/h3> ?描述
number 透明值?必须介?0.0(完全?明??1.0(不透明?之间?/td>

 

实例

首先,绘制一?色的矩形,然后将透明?(globalAlpha) 设置?0.2,然后再绘制?绿色和一?色的矩形?/p>

JavaScript:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(20,20,75,50);
// 调节透明?
ctx.globalAlpha=0.2;
ctx.fillStyle="blue";
ctx.fillRect(50,50,75,50);
ctx.fillStyle="green";
ctx.fillRect(80,80,75,50);

 

 

 

 

 

定义和用?/h2>

globalCompositeOperation 属?设置或返回?何将?源(新的)图像绘制到?(已有)的图像上?/p>

源图?= 您打算放?画布上的绘图?/p>

?图像 = 您已经放?画布上的绘图?/p>

默?值: JavaScript ??
source-over
context.globalCompositeOperation="source-in";

属??/h3> ?描述
source-over 默?。在?图像上显示源图像?/td>
source-atop 在目标图像顶部显示源图像。源图像位于?图像之?的部分是不可见的?/td>
source-in 在目标图像中显示源图像???图像内的源图像部分会显示,目标图像是透明的?/td>
source-out 在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的?/td>
destination-over 在源图像上方显示?图像?/td>
destination-atop 在源图像顶部显示?图像。源图像之?的目标图像部分不会?显示?/td>
destination-in 在源图像?示目标图像??源图像内的目标图像部分会?示,源图像是透明的?/td>
destination-out 在源图像外显示目标图像??源图像?的目标图像部分会?示,源图像是透明的?/td>
lighter 显示源图?+ ?图像?/td>
copy 显示源图像?忽略?图像?/td>
source-over 使用异或操作对源图像与目标图像进行组合?/td>

 

 var c=document.getElementById("myCanvas");

var ctx=c.getContext("2d");

ctx.fillStyle="red";
ctx.fillRect(20,20,75,50);
ctx.globalCompositeOperation="source-over";
ctx.fillStyle="blue";
ctx.fillRect(50,50,75,50);

ctx.fillStyle="red";
ctx.fillRect(150,20,75,50);
ctx.globalCompositeOperation="destination-over";
ctx.fillStyle="blue";
ctx.fillRect(180,50,75,50);