canvas基础4
一、图案
let image = new Image();
image.src = star.png;
pattern = context.createPattern(image, "repeat");
context.fillStyle = pattern;
context.fillRect(10, 10, 150, 150);
let image = new Image();
image.src = star.png;
pattern = context.createPattern(image, "repeat-x");
context.fillStyle = pattern;
context.fillRect(10, 10, 150, 150);
let image = new Image();
image.src = star.png;
pattern = context.createPattern(image, "repeat-y");
context.fillStyle = pattern;
context.fillRect(10, 10, 150, 150);
let image = new Image();
image.src = star.png;
pattern = context.createPattern(image, "no-repeat");
context.fillStyle = pattern;
context.fillRect(10, 10, 150, 150);
二、图像数据
let drawing = document.getElementById("drawing");
if (drawing.getContext) {
let context = drawing.getContext("2d"),
image = document.images[0],
imageData, data,
i, len, average,
red, green, blue, alpha;
context.drawImage(image, 0, 0);
imageData = context.getImageData(0, 0, image.width, image.height);
data = imageData.data;
for (i=0, len=data.length; i < len; i+=4) {
red = data[i];
green = data[i+1];
blue = data[i+2];
alpha = data[i+3];
average = Math.floor((red + green + blue) / 3);
data[i] = average;
data[i+1] = average;
data[i+2] = average;
}
imageData.data = data;
context.putImageData(imageData, 0, 0);
}
三、合成
context.fillStyle = "#ff0000";
context.fillRect(10, 10, 50, 50);
context.globalAlpha = 0.5;
context.fillStyle = "rgba(0,0,255,1)";
context.fillRect(30, 30, 50, 50);
context.globalAlpha = 0;
context.fillStyle = "#ff0000";
context.fillRect(10, 10, 50, 50);
context.globalCompositeOperation = "destination-over";
context.fillStyle = "rgba(0,0,255,1)";
context.fillRect(30, 30, 50, 50);
context.globalCompositeOperation = "source-in";
context.globalCompositeOperation = "source-out";
context.globalCompositeOperation = "source-atop";
context.globalCompositeOperation = "destination-in";
context.globalCompositeOperation = "destination-out";
context.globalCompositeOperation = "destination-atop";
context.globalCompositeOperation = "lighter";
context.globalCompositeOperation = "copy";
context.globalCompositeOperation = "xor";