지붕모양 지그재그패턴 추가
This commit is contained in:
parent
88a3ee601c
commit
e34f3c002a
@ -29,8 +29,19 @@ export default function Roof2() {
|
|||||||
|
|
||||||
const [showControl, setShowControl] = useState(false)
|
const [showControl, setShowControl] = useState(false)
|
||||||
|
|
||||||
const { mode, changeMode, handleClear, fillCellInPolygon, zoomIn, zoomOut, zoom, togglePolygonLine, handleOuterlinesTest2, applyTemplateB } =
|
const {
|
||||||
useMode()
|
mode,
|
||||||
|
changeMode,
|
||||||
|
handleClear,
|
||||||
|
fillCellInPolygon,
|
||||||
|
zoomIn,
|
||||||
|
zoomOut,
|
||||||
|
zoom,
|
||||||
|
togglePolygonLine,
|
||||||
|
handleOuterlinesTest2,
|
||||||
|
applyTemplateB,
|
||||||
|
makeRoofPatternPolygon,
|
||||||
|
} = useMode()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!canvas) {
|
if (!canvas) {
|
||||||
@ -240,6 +251,10 @@ export default function Roof2() {
|
|||||||
setShowControl(!showControl)
|
setShowControl(!showControl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const drawRoofPatterns = (roofStyle) => {
|
||||||
|
makeRoofPatternPolygon(roofStyle)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{canvas && (
|
{canvas && (
|
||||||
@ -267,12 +282,11 @@ export default function Roof2() {
|
|||||||
<Button className="m-1 p-2" color={`${mode === Mode.TEMPLATE ? 'primary' : 'default'}`} onClick={() => changeMode(canvas, Mode.PATTERNB)}>
|
<Button className="m-1 p-2" color={`${mode === Mode.TEMPLATE ? 'primary' : 'default'}`} onClick={() => changeMode(canvas, Mode.PATTERNB)}>
|
||||||
템플릿(B 패턴)
|
템플릿(B 패턴)
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button className="m-1 p-2" color={`${mode === Mode.TEMPLATE ? 'primary' : 'default'}`} onClick={() => drawRoofPatterns(1)}>
|
||||||
className="m-1 p-2"
|
지붕패턴1
|
||||||
color={`${mode === Mode.TEMPLATE ? 'primary' : 'default'}`}
|
</Button>
|
||||||
onClick={() => changeMode(canvas, Mode.ROOF_PATTERN)}
|
<Button className="m-1 p-2" color={`${mode === Mode.TEMPLATE ? 'primary' : 'default'}`} onClick={() => drawRoofPatterns(2)}>
|
||||||
>
|
지붕패턴2
|
||||||
지붕패턴
|
|
||||||
</Button>
|
</Button>
|
||||||
<Button className="m-1 p-2" color={`${mode === Mode.TEXTBOX ? 'primary' : 'default'}`} onClick={() => changeMode(canvas, Mode.TEXTBOX)}>
|
<Button className="m-1 p-2" color={`${mode === Mode.TEXTBOX ? 'primary' : 'default'}`} onClick={() => changeMode(canvas, Mode.TEXTBOX)}>
|
||||||
텍스트박스 모드
|
텍스트박스 모드
|
||||||
|
|||||||
@ -2140,7 +2140,7 @@ export function useMode() {
|
|||||||
canvas.renderAll()
|
canvas.renderAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
const makeRoofPatternPolygon = () => {
|
const makeRoofPatternPolygon = (roofStyle) => {
|
||||||
if (Object.keys(roofPolygonPattern).length === 0 && roofPolygonPattern.constructor === Object) {
|
if (Object.keys(roofPolygonPattern).length === 0 && roofPolygonPattern.constructor === Object) {
|
||||||
alert('객체가 비어있습니다.')
|
alert('객체가 비어있습니다.')
|
||||||
return
|
return
|
||||||
@ -2157,22 +2157,26 @@ export function useMode() {
|
|||||||
|
|
||||||
// 패턴 소스를 위한 임시 캔버스 생성
|
// 패턴 소스를 위한 임시 캔버스 생성
|
||||||
const patternSourceCanvas = document.createElement('canvas')
|
const patternSourceCanvas = document.createElement('canvas')
|
||||||
patternSourceCanvas.width = 20 * ratio
|
patternSourceCanvas.width = 30 * ratio
|
||||||
patternSourceCanvas.height = 15 * ratio
|
patternSourceCanvas.height = 30 * ratio
|
||||||
const ctx = patternSourceCanvas.getContext('2d')
|
const ctx = patternSourceCanvas.getContext('2d')
|
||||||
|
|
||||||
// 벽돌 패턴 그리기
|
// 벽돌 패턴 그리기
|
||||||
ctx.scale(ratio, ratio)
|
ctx.scale(ratio, ratio)
|
||||||
ctx.strokeStyle = 'green'
|
ctx.strokeStyle = 'green'
|
||||||
ctx.lineWidth = 0.1
|
ctx.lineWidth = 0.2
|
||||||
|
|
||||||
// 첫 번째 행 벽돌
|
// 첫 번째 행 벽돌
|
||||||
ctx.strokeRect(0, 0, 20, 15)
|
if (roofStyle === 2) {
|
||||||
// ctx.strokeRect(30, 20, 30, 20)
|
//지그재그
|
||||||
|
// // 두 번째 행 벽돌
|
||||||
// // 두 번째 행 벽돌
|
ctx.strokeRect(0, 0, 30, 15)
|
||||||
// ctx.strokeRect(-30, 20, 60, 20)
|
ctx.strokeRect(30, 15, 30, 15)
|
||||||
// ctx.strokeRect(0, 40, 60, 20)
|
ctx.strokeRect(-15, 15, 30, 15)
|
||||||
|
ctx.strokeRect(0, 30, 30, 15)
|
||||||
|
} else {
|
||||||
|
ctx.strokeRect(0, 0, 30, 30) // 원패턴일때랑 지그재그일때랑은 다르게 들어가야함
|
||||||
|
}
|
||||||
|
|
||||||
// 패턴 생성
|
// 패턴 생성
|
||||||
const pattern = new fabric.Pattern({
|
const pattern = new fabric.Pattern({
|
||||||
@ -2190,14 +2194,14 @@ export function useMode() {
|
|||||||
const middleRoof = new QPolygon(roofPolygonPattern.middleRoofPolygon, commonOption)
|
const middleRoof = new QPolygon(roofPolygonPattern.middleRoofPolygon, commonOption)
|
||||||
const smallRoof = new QPolygon(roofPolygonPattern.smallRoofPolygon, commonOption)
|
const smallRoof = new QPolygon(roofPolygonPattern.smallRoofPolygon, commonOption)
|
||||||
|
|
||||||
bigRoof.sendToBack() //객체를 가장 뒤로
|
|
||||||
middleRoof.sendToBack()
|
|
||||||
smallRoof.sendToBack()
|
|
||||||
|
|
||||||
bigRoof.setViewLengthText(false) //치수 필요없음
|
bigRoof.setViewLengthText(false) //치수 필요없음
|
||||||
middleRoof.setViewLengthText(false)
|
middleRoof.setViewLengthText(false)
|
||||||
smallRoof.setViewLengthText(false)
|
smallRoof.setViewLengthText(false)
|
||||||
|
|
||||||
|
bigRoof.sendToBack() //객체를 가장 뒤로
|
||||||
|
middleRoof.sendToBack()
|
||||||
|
smallRoof.sendToBack()
|
||||||
|
|
||||||
canvas.add(bigRoof) //캔버스 객체 추가
|
canvas.add(bigRoof) //캔버스 객체 추가
|
||||||
canvas.add(middleRoof)
|
canvas.add(middleRoof)
|
||||||
canvas.add(smallRoof)
|
canvas.add(smallRoof)
|
||||||
@ -2214,5 +2218,6 @@ export function useMode() {
|
|||||||
zoom,
|
zoom,
|
||||||
togglePolygonLine,
|
togglePolygonLine,
|
||||||
handleOuterlinesTest2,
|
handleOuterlinesTest2,
|
||||||
|
makeRoofPatternPolygon,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user