HTML5 Canvas元素通过鼠标绘制图形

信息梯子4周前 (01-09)网页设计131

最近工作上遇到这样的需求:生产的产品,在表面的不同区域会发生品质问题,但个产品会拍照进行标记。想要制作一个程序,通过在标准图形上鼠标绘制品质问题点,再累计叠加多个图片,分析问题发生的特征。


过程:


一、创建了一个Canvas元素,设置了固定宽度和高度,并将产品标准图片作为Canvas元素背景

二、结合HTML和JS代码,实现鼠标在Canvas区域随意绘制红色线条的团。

HTML5 Canvas元素通过鼠标绘制图形


下图是相关代码:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Canvas Mouse Drawing</title>
    <style>
        canvas {
            border: 1px solid black;
        }
    </style>
</head>

<body>
    <canvas id="drawingCanvas" width="800" height="600"></canvas>
    <script>
        const canvas = document.getElementById('drawingCanvas');
        const ctx = canvas.getContext('2d');
        let isDrawing = false;
        let startX;
        let startY;
        let points = [];

        canvas.addEventListener('mousedown', (e) => {
            isDrawing = true;
            startX = e.offsetX;
            startY = e.offsetY;
            points.push({ x: startX, y: startY });
        });

        canvas.addEventListener('mousemove', (e) => {
            if (isDrawing) {
                ctx.beginPath();
                ctx.strokeStyle = 'red';
                ctx.lineWidth =3;
                ctx.moveTo(startX, startY);
                ctx.lineTo(e.offsetX, e.offsetY);
                ctx.stroke();
                startX = e.offsetX;
                startY = e.offsetY;
                points.push({ x: startX, y: startY });
            }
        });

        canvas.addEventListener('mouseup', () => {
            isDrawing = false;
        });
    </script>
</body>

</html>


后续,还将优化,实现在Canvas标准图像上标记的图案,自动镜像到等尺寸的透明图片上。

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。