diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index 794c0265..217d0521 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -632,6 +632,9 @@ export default function Roof2(props) { setMode(Mode.TEXTBOX)}> 텍스트박스 모드 + setMode(Mode.DRAW_RECT)}> + 도머 추가 모드 + { + drawRectMode: (o) => { let rect, isDown, origX, origY - canvas.on('mouse:down', function (o) { - isDown = true - const pointer = canvas.getPointer(o.e) - origX = pointer.x - origY = pointer.y - rect = new fabric.Rect({ - left: origX, - top: origY, - originX: 'left', - originY: 'top', - width: pointer.x - origX, - height: pointer.y - origY, - angle: 0, - fill: 'transparent', - stroke: 'black', - transparentCorners: false, - }) - canvas.add(rect) + isDown = true + const pointer = canvas.getPointer(o.e) + origX = pointer.x + origY = pointer.y + rect = new fabric.Rect({ + left: origX, + top: origY, + originX: 'left', + originY: 'top', + width: pointer.x - origX, + height: pointer.y - origY, + angle: 0, + fill: 'transparent', + stroke: 'black', + transparentCorners: false, }) + canvas.add(rect) - canvas.on('mouse:move', function (o) { + canvas.on('mouse:move', function (e) { if (!isDown) return - const pointer = canvas.getPointer(o.e) + const pointer = canvas.getPointer(e.e) if (origX > pointer.x) { rect.set({ left: Math.abs(pointer.x) }) } @@ -837,6 +835,13 @@ export function useMode() { rect.set({ width: Math.abs(origX - pointer.x) }) rect.set({ height: Math.abs(origY - pointer.y) }) }) + + canvas.on('mouse:up', function (o) { + isDown = false + canvas.off('mouse:move') + canvas.off('mouse:up') + setMode(Mode.DEFAULT) + }) }, // 흡착점 추가 adsorptionPoint(o) {