登录
首页 >  文章 >  前端

原生JS+Canvas:打造可拖拽缩放矩形!

时间:2025-03-07 16:57:00 142浏览 收藏

本文介绍如何使用原生JavaScript和Canvas API创建一个可拖动并可调整大小的矩形。教程首先讲解如何实现矩形的拖动功能,通过监听鼠标按下、移动和松开事件,实时更新矩形位置并重新绘制。随后,教程扩展了代码,实现了点击矩形边缘调整大小的功能,同样通过事件监听和坐标计算来动态调整矩形尺寸。文章最后还推荐了Fabric.js库,为需要更高级功能的用户提供了更便捷的解决方案。 学习本文,您可以掌握使用原生JS和Canvas绘制交互式图形的技巧。

如何用原生JS和Canvas实现可拖动并可调整大小的矩形?

原生JavaScript Canvas:创建可拖拽、可缩放矩形

本教程演示如何利用原生JavaScript和Canvas API构建一个可拖动和调整大小的矩形。

一、可拖拽矩形

以下代码实现了可拖拽矩形的绘制:

// ... (previous code) ...

// 鼠标点击事件
canvas.addEventListener('click', (e) => {
  const mouseX = e.clientX - canvas.offsetLeft;
  const mouseY = e.clientY - canvas.offsetTop;

  // 检查鼠标是否在矩形边缘附近 (简化版,仅处理右下角缩放)
  if (mouseX >= rect.x + rect.width - 5 && mouseX <= rect.x + rect.width + 5 &&
      mouseY >= rect.y + rect.height - 5 && mouseY <= rect.y + rect.height + 5) {
    rect.isResizing = true;
  }
});

canvas.addEventListener('mousemove', (e) => {
  if (rect.isResizing) {
    const mouseX = e.clientX - canvas.offsetLeft;
    const mouseY = e.clientY - canvas.offsetTop;

    rect.width = mouseX - rect.x;
    rect.height = mouseY - rect.y;

    ctx.clearRect(0, 0, canvas.width, canvas.height);
    drawRect();
  }
});

canvas.addEventListener('mouseup', () => {
  rect.isResizing = false;
});

// ... (rest of the code) ...

高级库推荐

Fabric.js是一个功能强大的Canvas库,提供更便捷的图形操作和事件处理。 它能简化很多复杂操作,例如更精确的缩放和旋转控制。 如果您需要更高级的功能,Fabric.js是一个值得考虑的选择。

请注意,以上代码是一个简化版本,仅演示基本原理。 实际应用中,可能需要更精细的碰撞检测和边界处理。 完整的可调整大小的矩形实现需要处理所有八个边角的缩放,以及防止矩形尺寸小于0的情况。

今天关于《原生JS+Canvas:打造可拖拽缩放矩形!》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>