在用canvas绘制的时候如何单独给某一次绘制添加阴影
时间: 2023-08-11 13:33:08 浏览: 51
要单独给某一次绘制添加阴影,可以使用canvas的阴影属性:shadowColor、shadowBlur、shadowOffsetX和shadowOffsetY。在绘制之前,先设置好阴影属性,然后再进行绘制即可。例如,以下代码会在绘制矩形时添加阴影效果:
```javascript
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
ctx.shadowBlur = 10;
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.fillRect(50, 50, 100, 100); // 绘制带阴影的矩形
```
如果要取消阴影效果,可以把shadowBlur、shadowOffsetX和shadowOffsetY属性设置为0,或者把shadowColor属性设置为透明色。
相关问题
如果canvas绘制了两个矩形,但是只要给其中一个添加阴影,如何操作?
要单独给其中一个矩形添加阴影,可以按以下步骤操作:
1. 保存当前的canvas上下文状态,使用`save()`方法。
2. 设置绘制矩形的阴影属性,使用`shadowColor`、`shadowBlur`、`shadowOffsetX`和`shadowOffsetY`属性。
3. 绘制带阴影的矩形。
4. 恢复之前保存的canvas上下文状态,使用`restore()`方法。
例如,以下代码绘制两个矩形,其中第二个矩形带有阴影效果:
```javascript
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
// 绘制第一个矩形
ctx.fillStyle = 'red';
ctx.fillRect(50, 50, 100, 100);
// 绘制第二个矩形并添加阴影
ctx.save(); // 保存当前上下文状态
ctx.fillStyle = 'blue';
ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
ctx.shadowBlur = 10;
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.fillRect(200, 50, 100, 100); // 绘制带阴影的矩形
ctx.restore(); // 恢复之前的上下文状态,包括阴影属性的设置
```
这样操作后,只有第二个矩形带有阴影效果,第一个矩形不受影响。
使用canvas绘制一个球
以下是使用canvas绘制一个球的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Canvas Ball</title>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="200" height="200"></canvas>
<script>
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
const x = canvas.width / 2;
const y = canvas.height / 2;
const radius = 50;
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fillStyle = "red";
ctx.fill();
ctx.closePath();
</script>
</body>
</html>
```
解释:
1. 首先,在HTML中创建一个canvas元素,并设置其id、宽度和高度。
2. 然后,在JavaScript中获取canvas元素和绘图上下文。
3. 定义球的中心坐标和半径。
4. 使用beginPath()方法开始绘制路径。
5. 使用arc()方法绘制圆形路径。
6. 设置球的颜色为红色,并用fill()方法填充球。
7. 最后,使用closePath()方法关闭路径。
这样就可以在canvas上绘制一个红色的球了。