2022. 6. 17. 22:50
반응형
HTML 캔버스를 이용해 그림판처럼 마우스로 그림을 그리도록 만들 수 있다.
복잡한 기능을 생각하기 전에 간단하게 시작하는 예제를 만들었다.
아무런 기능 없이 그냥 검은색 연필로 그리기만 가능하고 지우기도 안된다.
모바일 환경을 위해 touchstart, touchend, touchmove 등의 이벤트도 같이 적용했다.
<div class="test-container" style="padding: 40px;background-color:lightgrey;text-align:center;">
<canvas id="canvas" width="500" height="300" style="border: 1px solid;background-color: white;"></canvas>
</div>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var getPosition = function(e) {
var x, y;
if(e.type.indexOf("mouse") > -1) {
x = e.offsetX;
y = e.offsetY;
} else {
var rect = e.target.getBoundingClientRect();
x = e.changedTouches[0].clientX - rect.x;
y = e.changedTouches[0].clientY - rect.y;
}
return {x:x, y:y};
};
var toggleDrawing = function(e) {
this.drawing = e.type === "mousedown" || e.type === "touchstart";
if(this.drawing) {
var pos = getPosition(e);
var ctx = this.getContext("2d");
ctx.beginPath();
ctx.moveTo(pos.x, pos.y);
}
}
var draw = function(e) {
//var pos = canvas.d
//console.log(e, this);
if(this.drawing) {
e.preventDefault();
var pos = getPosition(e);
var ctx = this.getContext("2d");
ctx.lineTo(pos.x, pos.y);
ctx.stroke();
}
};
canvas.addEventListener("mousemove", draw);
canvas.addEventListener("mousedown", toggleDrawing);
canvas.addEventListener("mouseup", toggleDrawing);
canvas.addEventListener("touchmove", draw);
canvas.addEventListener("touchstart", toggleDrawing);
canvas.addEventListener("touchend", toggleDrawing);
</script>
반응형
'dev' 카테고리의 다른 글
[JavaScript] input 숫자 3자리마다 콤마(,) 넣기 (0) | 2022.10.25 |
---|---|
[Java/Spring] NamedParameterJdbcTemplate 활용 DB 접근 (1) | 2022.09.22 |
[Java] 페이징 처리를 위해 간단히 만든 Pagination 클래스 (0) | 2022.09.04 |
[Java] 간단한 Spring Boot 프로젝트 생성, 실행 (0) | 2022.09.03 |
[Java] 이름 마스킹 (0) | 2022.04.22 |
[JavaScript] input 숫자만 입력하도록 하기 (0) | 2022.04.15 |
[JavaScript] 자식창에서 부모창의 변수 이용하기 (0) | 2021.08.30 |
[JavaScript] 카카오톡 대화내용 백업파일 뷰어 (0) | 2021.05.30 |