У меня есть приложение, содержащее холст, на котором я рисую, и мне хотелось бы иметь возможность точно отслеживать положение мыши. Проблема, с которой я сталкиваюсь, заключается в том, что чем дальше вы продвигаетесь в правый нижний угол, тем менее точным становится отслеживаемое положение. Вот демонстрационный компонент, который воспроизводит проблему:
Я пробовал заменить вычисления в PositionInComponent ответами, найденными здесь и здесь, но у них возникла та же проблема. Я также пробовал масштабировать положение x и y по ширине/высоте элемента, и это также привело к той же проблеме. Есть ли способ обеспечить точное отслеживание мыши?
У меня есть приложение, содержащее холст, на котором я рисую, и мне хотелось бы иметь возможность точно отслеживать положение мыши. Проблема, с которой я сталкиваюсь, заключается в том, что чем дальше вы продвигаетесь в правый нижний угол, тем менее точным становится отслеживаемое положение. Вот демонстрационный компонент, который воспроизводит проблему: [code]import {type MouseEvent, useEffect, useRef, useState} from "react"; import {Col, Container, Row} from "react-bootstrap";
export interface Coordinate { x: number, y: number }
function markMouse(ctx: CanvasRenderingContext2D, x: number, y: number) { ctx.beginPath() ctx.arc(x, y, 3, 0, 2*Math.PI); ctx.strokeText(`(${x.toFixed(2)},${y.toFixed(2)})`, x + 10, y - 10) ctx.fill() ctx.stroke() ctx.closePath() }
function positionInComponent(e: MouseEvent): Coordinate { const bounds = e.currentTarget.getBoundingClientRect(); return { x: e.clientX - bounds.left, y: e.clientY - bounds.top } } [/code] Я пробовал заменить вычисления в PositionInComponent ответами, найденными здесь и здесь, но у них возникла та же проблема. Я также пробовал масштабировать положение x и y по ширине/высоте элемента, и это также привело к той же проблеме. Есть ли способ обеспечить точное отслеживание мыши?