实例1:绘制矩形
在HTML5 Canvas中,绘制矩形是非常基础的操作。使用canvasContext.rect(x, y, width, height)可以定义矩形的四个角的位置和大小,而canvasContext.stroke()或canvasContext.fill()则用于绘制矩形的外框或填充矩形。
function drawRectangle() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
ctx.fillRect(20, 20, 150, 100);
}
实例2:绘制圆形
绘制圆形需要使用canvasContext.arc(x, y, radius, startAngle, endAngle, anticlockwise)方法。x和y是圆心的坐标,radius是圆的半径,startAngle和endAngle是圆弧的起始和结束角度(以弧度为单位),anticlockwise是一个布尔值,表示是否按逆时针方向绘制。
function drawCircle() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI);
ctx.fillStyle = 'blue';
ctx.fill();
}
实例3:绘制文本
使用canvasContext.fillText(text, x, y)可以在Canvas上绘制文本。text是要绘制的文本,x和y是文本基线的位置。
function drawText() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.font = '24px Arial';
ctx.fillText('Hello, Canvas!', 50, 50);
}
实例4:绘制线条
绘制线条使用canvasContext.beginPath()开始一个新的路径,然后使用canvasContext.moveTo(x, y)移动到起始点,接着使用canvasContext.lineTo(x, y)绘制线条。
function drawLine() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 200);
ctx.stroke();
}
实例5:绘制图像
将图像绘制到Canvas上,可以使用canvasContext.drawImage(image, dx, dy, dWidth, dHeight)方法。image是图像对象,dx和dy是图像在Canvas上的起始位置,dWidth和dHeight是图像在Canvas上的宽度和高度。
function drawImage() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'path/to/image.jpg';
img.onload = function() {
ctx.drawImage(img, 0, 0);
};
}
实例6:绘制渐变
使用canvasContext.createLinearGradient(x1, y1, x2, y2)创建一个线性渐变对象,然后使用canvasContext.fillStyle或canvasContext.strokeStyle将其应用到绘制方法中。
function drawGradient() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var gradient = ctx.createLinearGradient(0, 0, canvas.width, 0);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'blue');
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
实例7:绘制径向渐变
径向渐变与线性渐变类似,但它是从圆心向外的。使用canvasContext.createRadialGradient(x1, y1, r1, x2, y2, r2)创建径向渐变。
function drawRadialGradient() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var gradient = ctx.createRadialGradient(75, 75, 5, 100, 100, 95);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'blue');
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
实例8:绘制阴影
使用canvasContext.shadowColor、canvasContext.shadowOffsetX、canvasContext.shadowOffsetY和canvasContext.shadowBlur可以给Canvas上的图形添加阴影。
function drawShadow() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
ctx.shadowOffsetX = 10;
ctx.shadowOffsetY = 10;
ctx.shadowBlur = 5;
ctx.fillStyle = 'red';
ctx.fillRect(50, 50, 100, 100);
}
实例9:绘制文本阴影
文本阴影的设置与图形阴影类似,但需要使用canvasContext.textShadow属性。
function drawTextShadow() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.textShadow = '2px 2px 2px rgba(0, 0, 0, 0.5)';
ctx.font = '24px Arial';
ctx.fillText('Text with shadow', 50, 50);
}
实例10:绘制图案
使用canvasContext.createPattern(image, repeat)可以创建一个图案,并将其应用到Canvas上的图形中。
function drawPattern() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'path/to/image.jpg';
img.onload = function() {
var pattern = ctx.createPattern(img, 'repeat');
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, canvas.width, canvas.height);
};
}
实例11:绘制旋转图形
使用canvasContext.rotate(angle)可以旋转图形。角度是以弧度为单位计算的。
function drawRotated() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.translate(150, 150); // 移动坐标系原点到中心
ctx.rotate(Math.PI / 4); // 旋转90度
ctx.fillStyle = 'green';
ctx.fillRect(-50, -50, 100, 100);
}
实例12:绘制缩放图形
使用canvasContext.scale(scaleX, scaleY)可以缩放图形。
function drawScaled() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.scale(2, 2); // 缩放2倍
ctx.fillStyle = 'blue';
ctx.fillRect(0, 0, 50, 50);
}
实例13:绘制平移图形
使用canvasContext.translate(dx, dy)可以平移图形。
function drawTranslated() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.translate(50, 50); // 平移50像素
ctx.fillStyle = 'yellow';
ctx.fillRect(0, 0, 50, 50);
}
实例14:绘制贝塞尔曲线
使用canvasContext.bezierCurveTo(c1x, c1y, c2x, c2y, x, y)可以绘制贝塞尔曲线。其中,c1x和c1y是第一个控制点的坐标,c2x和c2y是第二个控制点的坐标,x和y是曲线终点的坐标。
function drawBezierCurve() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.bezierCurveTo(100, 0, 200, 200, 300, 50);
ctx.stroke();
}
实例15:绘制二次贝塞尔曲线
使用canvasContext.quadraticCurveTo(cpx, cpy, x, y)可以绘制二次贝塞尔曲线。其中,cpx和cpy是控制点的坐标,x和y是曲线终点的坐标。
function drawQuadraticCurve() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.quadraticCurveTo(100, 0, 200, 50);
ctx.stroke();
}
实例16:绘制路径
使用canvasContext.beginPath()开始一个新的路径,然后使用canvasContext.moveTo(x, y)移动到起始点,接着使用canvasContext.lineTo(x, y)绘制线条,最后使用canvasContext.closePath()关闭路径。
function drawPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(150, 150);
ctx.lineTo(250, 50);
ctx.closePath();
ctx.stroke();
}
实例17:绘制圆形路径
使用canvasContext.arcTo(x1, y1, x2, y2, radius)可以绘制圆形路径。其中,x1和y1是起始点的坐标,x2和y2是终点的坐标,radius是圆弧的半径。
function drawArcTo() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.arcTo(150, 50, 150, 150, 100);
ctx.lineTo(250, 50);
ctx.closePath();
ctx.stroke();
}
实例18:绘制矩形路径
使用canvasContext.rect(x, y, width, height)可以绘制矩形路径。
function drawRectPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.rect(50, 50, 100, 100);
ctx.closePath();
ctx.stroke();
}
实例19:绘制圆形路径
使用canvasContext.arc(x, y, radius, startAngle, endAngle, anticlockwise)可以绘制圆形路径。
function drawCirclePath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI);
ctx.closePath();
ctx.stroke();
}
实例20:绘制文本路径
使用canvasContext.fillText(text, x, y)可以在Canvas上绘制文本路径。
function drawTextPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.fillText('Hello, Canvas!', 50, 50);
ctx.closePath();
ctx.stroke();
}
实例21:绘制线条路径
使用canvasContext.moveTo(x, y)和canvasContext.lineTo(x, y)可以绘制线条路径。
function drawLinePath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 200);
ctx.closePath();
ctx.stroke();
}
实例22:绘制图像路径
使用canvasContext.drawImage(image, dx, dy, dWidth, dHeight)可以绘制图像路径。
function drawImagePath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'path/to/image.jpg';
img.onload = function() {
ctx.drawImage(img, 0, 0);
};
}
实例23:绘制渐变路径
使用canvasContext.createLinearGradient(x1, y1, x2, y2)和canvasContext.createRadialGradient(x1, y1, r1, x2, y2, r2)可以绘制渐变路径。
function drawGradientPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var gradient = ctx.createLinearGradient(0, 0, canvas.width, 0);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'blue');
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
实例24:绘制阴影路径
使用canvasContext.shadowColor、canvasContext.shadowOffsetX、canvasContext.shadowOffsetY和canvasContext.shadowBlur可以给Canvas上的图形添加阴影路径。
function drawShadowPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
ctx.shadowOffsetX = 10;
ctx.shadowOffsetY = 10;
ctx.shadowBlur = 5;
ctx.fillStyle = 'red';
ctx.fillRect(50, 50, 100, 100);
}
实例25:绘制文本阴影路径
文本阴影的设置与图形阴影类似,但需要使用canvasContext.textShadow属性。
function drawTextShadowPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.textShadow = '2px 2px 2px rgba(0, 0, 0, 0.5)';
ctx.font = '24px Arial';
ctx.fillText('Text with shadow', 50, 50);
}
实例26:绘制图案路径
使用canvasContext.createPattern(image, repeat)可以创建一个图案,并将其应用到Canvas上的图形中。
function drawPatternPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'path/to/image.jpg';
img.onload = function() {
var pattern = ctx.createPattern(img, 'repeat');
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, canvas.width, canvas.height);
};
}
实例27:绘制旋转路径
使用canvasContext.rotate(angle)可以旋转图形路径。
function drawRotatedPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.translate(150, 150); // 移动坐标系原点到中心
ctx.rotate(Math.PI / 4); // 旋转90度
ctx.fillStyle = 'green';
ctx.fillRect(-50, -50, 100, 100);
}
实例28:绘制缩放路径
使用canvasContext.scale(scaleX, scaleY)可以缩放图形路径。
function drawScaledPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.scale(2, 2); // 缩放2倍
ctx.fillStyle = 'blue';
ctx.fillRect(0, 0, 50, 50);
}
实例29:绘制平移路径
使用canvasContext.translate(dx, dy)可以平移图形路径。
function drawTranslatedPath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.translate(50, 50); // 平移50像素
ctx.fillStyle = 'yellow';
ctx.fillRect(0, 0, 50, 50);
}
实例30:绘制贝塞尔曲线路径
使用canvasContext.bezierCurveTo(c1x, c1y, c2x, c2y, x, y)可以绘制贝塞尔曲线路径。
function drawBezierCurvePath() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.bezierCurveTo(100, 0, 200, 200, 300, 50);
ctx.stroke();
}
以上是30个HTML5 Canvas实战技巧的实例解析,希望对您有所帮助。在实际开发中,可以根据需要灵活运用这些技巧,创造出更多有趣和实用的Canvas应用。
