fix(tool): mousePointer
This commit is contained in:
@@ -6,6 +6,7 @@ import React, {
|
|||||||
useImperativeHandle,
|
useImperativeHandle,
|
||||||
useRef,
|
useRef,
|
||||||
} from "react"
|
} from "react"
|
||||||
|
import { useTopToolsStore } from "../useTopToolsStore"
|
||||||
|
|
||||||
interface AssistShapeComponentProps {
|
interface AssistShapeComponentProps {
|
||||||
size: number
|
size: number
|
||||||
@@ -16,7 +17,9 @@ const AssistShapeComponent = (
|
|||||||
ref: React.Ref<unknown> | undefined
|
ref: React.Ref<unknown> | undefined
|
||||||
) => {
|
) => {
|
||||||
const { size } = props
|
const { size } = props
|
||||||
|
const scale = useTopToolsStore((state) => state.scale)
|
||||||
const canvasRef = useRef<HTMLCanvasElement>(null)
|
const canvasRef = useRef<HTMLCanvasElement>(null)
|
||||||
|
const lastPointerRef = useRef<{ x: number; y: number } | null>(null)
|
||||||
|
|
||||||
const drawAssistShape = useCallback(
|
const drawAssistShape = useCallback(
|
||||||
(centerX: number, centerY: number) => {
|
(centerX: number, centerY: number) => {
|
||||||
@@ -24,7 +27,7 @@ const AssistShapeComponent = (
|
|||||||
const ctx = canvas?.getContext("2d")
|
const ctx = canvas?.getContext("2d")
|
||||||
if (!canvas || !ctx) return
|
if (!canvas || !ctx) return
|
||||||
|
|
||||||
const radius = Math.max(1, size)
|
const radius = Math.max(1, size * scale)
|
||||||
const side = radius * 2
|
const side = radius * 2
|
||||||
const left = centerX - radius
|
const left = centerX - radius
|
||||||
const top = centerY - radius
|
const top = centerY - radius
|
||||||
@@ -38,7 +41,7 @@ const AssistShapeComponent = (
|
|||||||
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2)
|
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2)
|
||||||
ctx.stroke()
|
ctx.stroke()
|
||||||
},
|
},
|
||||||
[size]
|
[scale, size]
|
||||||
)
|
)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -47,7 +50,11 @@ const AssistShapeComponent = (
|
|||||||
canvas.width = window.innerWidth
|
canvas.width = window.innerWidth
|
||||||
canvas.height = window.innerHeight
|
canvas.height = window.innerHeight
|
||||||
const rect = canvas.getBoundingClientRect()
|
const rect = canvas.getBoundingClientRect()
|
||||||
drawAssistShape(rect.width / 2, rect.height / 2)
|
const center = lastPointerRef.current || {
|
||||||
|
x: rect.width / 2,
|
||||||
|
y: rect.height / 2,
|
||||||
|
}
|
||||||
|
drawAssistShape(center.x, center.y)
|
||||||
}, [drawAssistShape])
|
}, [drawAssistShape])
|
||||||
|
|
||||||
const updateAssistShape = (event: { clientX: number; clientY: number }) => {
|
const updateAssistShape = (event: { clientX: number; clientY: number }) => {
|
||||||
@@ -56,6 +63,7 @@ const AssistShapeComponent = (
|
|||||||
const rect = canvas.getBoundingClientRect()
|
const rect = canvas.getBoundingClientRect()
|
||||||
const centerX = event.clientX - rect.left
|
const centerX = event.clientX - rect.left
|
||||||
const centerY = event.clientY - rect.top
|
const centerY = event.clientY - rect.top
|
||||||
|
lastPointerRef.current = { x: centerX, y: centerY }
|
||||||
drawAssistShape(centerX, centerY)
|
drawAssistShape(centerX, centerY)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ import {
|
|||||||
Paintbrush,
|
Paintbrush,
|
||||||
Pen,
|
Pen,
|
||||||
SquarePen,
|
SquarePen,
|
||||||
|
SquareDashedMousePointer,
|
||||||
Tag,
|
Tag,
|
||||||
Timer,
|
Timer,
|
||||||
} from "lucide-react"
|
} from "lucide-react"
|
||||||
@@ -2082,7 +2083,7 @@ const TopTools = (
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
setAssistToolEnabled(!assistToolEnabled)
|
setAssistToolEnabled(!assistToolEnabled)
|
||||||
}}>
|
}}>
|
||||||
<Eclipse size={16} />
|
<SquareDashedMousePointer size={16} />
|
||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
<NumberInput
|
<NumberInput
|
||||||
value={assistToolSize}
|
value={assistToolSize}
|
||||||
|
|||||||
Reference in New Issue
Block a user