Canvas怎么实现图片缩放?

要使用 Canvas 在鼠标滚轮时实现图片的缩放,首先你需要监听 wheel 事件。当用户滚动鼠标滚轮时,这个事件就会被触发。然后,你可以根据滚轮的方向来改变 Canvas 的 scale 属性,从而实现图片的缩放。

以下是一个简单的示例,展示了如何使用 Canvas 来实现这个功能:

示例效果与源代码:

运行效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;"></canvas>
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var scale = 1;
var scaleFactor = 0.1;
var img = new Image();
img.src = "image/1.jpg";
img.onload = function() {
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
};

// 添加鼠标滚轮事件监听器,用于缩放
canvas.addEventListener('wheel', function(e) {
e.preventDefault();
var mouseX = e.clientX - canvas.offsetLeft;
var mouseY = e.clientY - canvas.offsetTop;

// 根据滚轮方向调整缩放比例
if (e.deltaY < 0) { // 向上滚动: 放大
scale *= 1 + scaleFactor;
} else { // 向下滚动: 缩小
scale *= 1 - scaleFactor;
}

// 重置 Canvas 大小并绘制内容
canvas.width = canvas.width; // 清空 Canvas
ctx.scale(scale, scale); // 设置 Canvas 的 scale 属性
ctx.drawImage(img, 0, 0, canvas.width, canvas.height); // 根据缩放比例重新绘制图片
});
</script>
</body>
</html>

尝试一下 »

在这个示例中,我们首先创建了一个 Image 对象,并设置其 onload 事件处理函数。当图片加载完成后,我们使用 drawImage 方法将其绘制到 Canvas 上。然后,我们添加了一个鼠标滚轮事件监听器。当用户滚动鼠标滚轮时,我们根据滚轮的方向调整 Canvas 的 scale 属性,并重新绘制图片。这样,当用户滚动鼠标滚轮时,图片就会相应地缩放。