Как нарисовать тонкую прямую линию на холсте между двумя щелчками мыши?

  • 16 августа 2023 г. 5:16
Ответы на вопрос 2
Добрый день! Я могу показать вам пример кода на JavaScript, который нарисует тонкую прямую линию на холсте между двумя щелчками мыши.

```
<!DOCTYPE html>
<html>
<head>
    <title>Draw Line on Canvas</title>
    <style>
        #myCanvas {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <canvas id="myCanvas" width="500" height="500"></canvas>
    <script>
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");
        var isDrawing = false;
        var startPoint = { x: 0, y: 0 };
        var endPoint = { x: 0, y: 0 };

        canvas.addEventListener("mousedown", function (e) {
            isDrawing = true;
            startPoint.x = e.clientX - this.offsetLeft;
            startPoint.y = e.clientY - this.offsetTop;
        });

        canvas.addEventListener("mousemove", function (e) {
            if (isDrawing) {
                ctx.clearRect(0, 0, canvas.width, canvas.height);
                ctx.beginPath();
                ctx.moveTo(startPoint.x, startPoint.y);
                ctx.lineTo(e.clientX - this.offsetLeft, e.clientY - this.offsetTop);
                ctx.stroke();
            }
        });

        canvas.addEventListener("mouseup", function (e) {
            isDrawing = false;
            endPoint.x = e.clientX - this.offsetLeft;
            endPoint.y = e.clientY - this.offsetTop;
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            ctx.beginPath();
            ctx.moveTo(startPoint.x, startPoint.y);
            ctx.lineTo(endPoint.x, endPoint.y);
            ctx.stroke();
        });
    </script>
</body>
</html>
```
Этот код создает холст, на котором можно рисовать, нажимая кнопку мыши и перемещая ее. При нажатии и удержании кнопки мыши нарисуется линия между начальной точкой (первым щелчком мыши) и текущей позицией курсора. Когда кнопка мыши отпускается, линия будет отрисована между начальной и конечной точками (вторым щелчком мыши). Линия на холсте будет отображаться как тонкая прямая линия.
const rect = $canvas.getBoundingClientRect(); // добавьте следующие две строки
    $canvas.width = rect.width;
    $canvas.height = rect.height;
Похожие вопросы