IdoCleanCode
article thumbnail
Published 2023. 12. 29. 13:58
[Canvas] 직선 그리기 카테고리 없음
728x90

[Canvas] 튜토리얼

선 그리기 기본 원리 

HTML5 캔버스를 사용하여 직선을 그리려면 다음과 같은 단계를 수행해야합니다.

  1. 캔버스 요소를 생성
  2. getContext('2d') 생성
  3. beginPath() 경로 초기화
  4. moveTo()사용하여 시작점을 설정
  5. lineTo() 사용하여 끝점을 설정
  6. stoke() 사용하여 선을 그립니다.

선 그리기 원리
선 그리기 원리

직선 그리기( movTo, lineTo, stroke)

위에 설명 대로 html파일 하나로 캔버스 호출하여 JS로 제어 하여 직선을 만들어 봅니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>캔버스 직선 그리기</title>
</head>
<body>
  <canvas id="myCanvas" width="500" height="500"></canvas>
<script>
let canvas = document.getElementById('myCanvas')
let ctx = canvas.getContext('2d')
ctx.beginPath()
ctx.moveTo(canvas.width*0.2,canvas.height*0.2)
ctx.lineTo(canvas.width*0.8,canvas.height*0.2)
ctx.stroke()
</script>
</body>
</html>

켄버스 높의 20% 위치에서 시작하여 길이가 캔버스 높이의 60%인 선을 그립니다.

 

다중선 그리기

movTo lineTo stroke 반복해서 그리면 됩니다.

다중선
다중선

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>다중선그리기</title>
</head>
<body>
 <canvas></canvas>
<script>
  let canvas = document.querySelector("canvas")
  let ctx = canvas.getContext('2d')
  canvas.width = 300
  canvas.height = 300
  let canvasWidth = canvas.width
  let canvasHeight = canvas.height

  ctx.beginPath()
  //첫번째 줄
  ctx.moveTo(canvasWidth*0.2, canvasHeight*0.2)
  ctx.lineTo(canvasWidth*0.8, canvasHeight*0.2)
  ctx.stroke()

  //두번째 줄
  ctx.moveTo(canvasWidth*0.2, canvasHeight*0.4)
  ctx.lineTo(canvasWidth*0.8, canvasHeight*0.4)
  ctx.stroke()

  //세번째 줄
  ctx.moveTo(canvasWidth*0.2, canvasHeight*0.6)
  ctx.lineTo(canvasWidth*0.8, canvasWidth*0.6)
  ctx.stroke()

  //네번째 줄
  ctx.moveTo(canvasWidth*0.2, canvasWidth*0.8)
  ctx.lineTo(canvasWidth*0.8, canvasHeight*0.8)
  ctx.stroke()

</script>
</body>
</html>

 

선 색상 변경(strokeStyle)

선의 색상을 변경하려면 strokeStyle 속성을 사용합니다.값은 이름, 16진수,  RGB, BGBA, HSL, HSLA 들어 갑니다.

  let canvas = document.querySelector("canvas")
  let ctx = canvas.getContext('2d')
  ctx.beginPath()
  ctx.moveTo(50,50)
  ctx.lineTo(300, 50)
  ctx.strokeStyle = 'red'
  ctx.stroke()

 

선 두께 변경(lineWidth)

선의 두께를 변경하려면 lineWidth 속성을 사용하면 됩니다. 기본적으로 값 단위는 픽셀로 들어갑니다.

  let canvas = document.querySelector("canvas")
  let ctx = canvas.getContext('2d')
  ctx.beginPath()
  ctx.moveTo(30,30)
  ctx.lineTo(150, 30)
  ctx.lineWidth = 10
  ctx.stroke()

선 종류 변경

캔버스에서 선의 종류 변경하려면 setLineDash메소드를 사용하면됩니다. 인자에 segments "숫자로 이루어진 배열"이 들어가며 [] 실선 [선길이, 선 간격]이 들어갑니다.

<script>
  let canvas = document.querySelector("canvas")
  let ctx = canvas.getContext('2d')
  ctx.beginPath()
  ctx.moveTo(canvas.width*0.2,canvas.height*0.2)
  ctx.lineTo(canvas.width*0.8,canvas.height*0.2)
  ctx.setLineDash([])
  ctx.stroke()

  ctx.beginPath()
  ctx.moveTo(canvas.width*0.2,canvas.height*0.4)
  ctx.lineTo(canvas.width*0.8,canvas.height*0.4)
  ctx.setLineDash([5,5])
  ctx.stroke()

  ctx.beginPath()
  ctx.moveTo(canvas.width*0.2,canvas.height*0.6)
  ctx.lineTo(canvas.width*0.8,canvas.height*0.6)
  ctx.setLineDash([5,10])
  ctx.stroke()
</script>
728x90
profile

IdoCleanCode

@IdoCleanCode

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!