找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 897|回复: 1

[分享] 如何利用JavaScript开发网页CAD的测量长度功能

[复制链接]

299

主题

20

回帖

3984

积分

中尉

积分
3984

活跃会员

发表于 2023-4-26 14:01:01 | 显示全部楼层 |阅读模式
这里提供一个基于 JavaScript 的在线 CAD 测量长度功能示例代码:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>在线 CAD 测量长度功能</title>
  5. <meta charset="utf-8">
  6. <style type="text/css">
  7.   canvas {
  8.    border: 1px solid black;
  9.    cursor: crosshair;
  10.   }
  11. </style>
  12. </head>
  13. <body>
  14. <canvas id="canvas" width="400" height="400"></canvas>

  15. <script type="text/javascript">

  16. // 初始化变量
  17. var canvas = document.getElementById('canvas');
  18. var context = canvas.getContext('2d');
  19. var mouseDown = false;
  20. var lastX, lastY;
  21. var currentX, currentY;
  22. var totalLength = 0;

  23. // 监听鼠标按下事件
  24. canvas.addEventListener('mousedown', function(event) {
  25.   mouseDown = true;
  26.   lastX = event.pageX - canvas.offsetLeft;
  27.   lastY = event.pageY - canvas.offsetTop;
  28.   context.beginPath();
  29.   context.moveTo(lastX, lastY);
  30. });

  31. // 监听鼠标移动事件
  32. canvas.addEventListener('mousemove', function(event) {
  33.   if (mouseDown) {
  34.    currentX = event.pageX - canvas.offsetLeft;
  35.    currentY = event.pageY - canvas.offsetTop;
  36.    context.lineTo(currentX, currentY);
  37.    context.stroke();
  38.    totalLength += Math.sqrt(Math.pow((currentX - lastX), 2) + Math.pow((currentY - lastY), 2));
  39.    lastX = currentX;
  40.    lastY = currentY;
  41.   }
  42. });

  43. // 监听鼠标抬起事件
  44. canvas.addEventListener('mouseup', function(event) {
  45.   mouseDown = false;
  46.   alert('总长度为:' + totalLength.toFixed(2) + ' 像素');
  47. });

  48. </script>
  49. </body>
  50. </html>
复制代码

在该示例代码中,我们首先获取了 canvas 元素和其绘图上下文对象 context。然后监听了 mousedownmousemove mouseup 三个事件,并在事件处理函数中实现了绘制线条并计算总长度的逻辑。最后,当鼠标抬起时,弹出一个提示框展示总长度。
需要注意的是,在这段示例代码中,长度的单位是像素,如果需要将其转换为其他单位(如毫米、英寸等),则需要根据实际情况进行换算,详细情况可以参考梦想CAD控件的H5云图版产品

1

主题

2358

回帖

6591

积分

上尉

积分
6591
发表于 2024-4-16 15:27:37 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2024-12-25 14:52

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表