본문 바로가기

JavaScript/JS_Project

[momentum app] 페인트 굵기 조절, 채우기

const range = document.getElementById("jsRange");

function handleRangeChange(event) {
    const size = event.target.value;
    ctx.lineWidth = size;
}

if(range) {
    range.addEventListener("input", handleRangeChange);
}

html내 range를 변수로 만들고, range type는 input으로 value가 변경되기 때문에 addEventListener에

"input" 삽입, 담당 함수를 생성 후 range 값 변경 시 value값으 변경 되므로 가존 default값이 2.5였던

ctx.lineWidth를 변경되는 값의 변수로 지정한다.

 

색상 변경시 굵기 조절 마찬가지로 적용된다.

 

그 다음 fill을 누를 시 paint로 변경되며 여러 색으로 채우기가 가능하게 만들어본다.

const mode = document.getElementById("jsMode");
/*HTML에 있는 fill button*/

const INITIAL_COLOR = "##2c2c2c";
ctx.fillStyle = INITIAL_COLOR;

let filling = false; 

function handleColorClick(event) {
    const color = event.target.style.backgroundColor;
    ctx.strokeStyle = color;
    ctx.fillStyle = color;
}
/*색상변경 함수에 채우기 색 변경도 추가*/

function handleModeClick() {
    if(filling === true) {
        filling = false;
        mode.innerText = "Fill";
    } else {
        filling = true;
        mode.innerText = "Paint";
    }
}

function handleCanvasClick() {
    if (filling) {
      ctx.fillRect(0, 0, CANVAS_SIZE, CANVAS_SIZE);
    }
 }
 /* CANVAS SIZE는 500으로 하였다 */
 
 if(canvas) {
    canvas.addEventListener("mousemove", onMouseMove);
    canvas.addEventListener("mousedown", startPainting);
    canvas.addEventListener("mouseup", stopPainting);
    canvas.addEventListener("mouseleave", stopPainting);
    canvas.addEventListener("click", handleCanvasClick);
    /* handleCanvasClick 함수를 위한 event 추가 */
}

if(mode) {
    mode.addEventListener("click", handleModeClick);
}

filling을 true false값으로 변경 가능하게 만들어 줘서 처음 canvas클릭 시 fillRect가 canvas 크기만큼 적용 되지 않지만, fill button 클릭 후 filling 값이 true가 되어서 canvas 클릭 시 fillRect가 canvas 크기만큼 적용되어서 채우기가 가능하다.

 

FILL Yellow를 적용한 화면

 

참고 영상 : https://www.youtube.com/watch?v=2m_WnYeI1pA

'JavaScript > JS_Project' 카테고리의 다른 글

[momentum app] stopwatch 만들기  (0) 2021.10.08
[momentum app] 그림 저장 버튼  (0) 2021.10.08
[momentum app] 지우개 기능 추가  (0) 2021.10.06
[momentum app] 컬러 변경  (0) 2021.10.02
[momentum app]현재 진행 상황  (0) 2021.10.01