/**
* getImageData(x,y,w,h);
* 属性data:一个数组包含每个像素的rgba四个值每个值豆子啊0-255之间
* putImageDate(获取图像,x,y)
* 设置新的图像数据
* createImageData
* 生成新的像素矩阵,初始值为全透明的黑色
*
*/
var oc = document.getElementById("canvas");
var ogc = oc.getContext('2d');
//
ogc.fillRect(0,0,100,100);
var oImg = ogc.getImageData(0,0,100,100);
// oImg.width //一行的像素数
// 像素数应该为100*100为什么会弹出40000 但是4组值代表一个像素即rgba
// alert(oImg.data.length);//40000整行像素的数组集合
// alert(oImg.data[0]); //0
<pre name="code" class="javascript">/**
* canvas 合成
* 全局阿尔法值-globalAlpha
* 覆盖合成
* -源:新的图形
* -已绘制过的图形
* -globalCompositionOperation
* source-over destination-over source-atop
* destination-atop source-in destination-in
* souce-out destionation-out lighter
* copy xor
* 将画布导出为图像
* toDataURL
* 火狐右键可直接导出图片
* 事件操作
* isPointInPath(x,y)
* -x,y坐标
* -是否在点击范围内
* -jCanvasScript
*/
var oc = document.getElementById("canvas");
var ogc = oc.getContext('2d');
//合成
ogc.fillRect(0,0,100,100);
ogc.fillStyle = 'red';
// ogc.globalAlpha = 0.5;
ogc.globalCompositeOperation = 'xor'
ogc.fillRect(50,50,100,100);
// 将画布导出为图像
oc.toDataURL();
//canvas 事件操作
ogc.beginPath();
ogc.arc(250,100,50,0,360*Math.PI/180,false);
ogc.closePath();
ogc.fill();
ogc.beginPath();
ogc.arc(250,250,50,0,360*Math.PI/180,false);
ogc.closePath();
ogc.fill();
oc.onmousedown = function(ev){
var ev = ev || window.event;
var x = ev.clientX - oc.offsetLeft;
var y = ev.clientY - oc.offsetTop;
if(ogc.isPointInPath(x,y)){ //是否在点击的区域内只针对绘制后的最后一个圆解决方法 封装为一个对象
alert("122");
}
}
//canvas 事件操作封装
var c1 = new Shape(100,100,50);
var c2 = new Shape(200,200,50);
oc.onmousedown = function(ev){
var ev = ev || window.event;
var point = {
x : ev.clientX - oc.offsetLeft,
y : ev.clientY - oc.offsetTop
}
c1.reDraw(point);
c2.reDraw(point);
}
c1.click = function(){
alert("c1范围内");
}
c2.click = function(){
alert("c2范围内");
}
function Shape(x,y,r){
this.x = x;
this.y = y;
this.r = r;
ogc.beginPath();
ogc.arc(this.x,this.y,this.r,0,360*Math.PI/180,false);
ogc.fill();
}
Shape.prototype.reDraw = function(point){
ogc.beginPath();
ogc.arc(this.x,this.y,this.r,0,360*Math.PI/180,false);
ogc.fill();
if(ogc.isPointInPoint(point.x,point.y)){
this.click();
}
}