定义和用?/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>
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>
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);