본문 바로가기

CS Study/Projects

Project 8 : 그림판 구현

그림판 구현

#기능 설명

1. 그림판에는 선만 그릴 수 있다.

2. 마우스 드래깅으로 그림을 그린다.

3. 마우스가 움직이는 동안 마우스 포인터의 좌표를 출력한다.

4. 그림판에는 마우스로 선택 가능한 16개의 색을 가진 팔레트와 컬러 다이얼로그를 출력하여 사용자로부터 색을 입력받는다. 그리고 그 오른편에는 현재 선택된 색을 표시한다.

5. 선의 굵기를 선택하는 기능을 둔다.

 

 

built by HTML, CSS, Javascript

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @import url("그림판 웹 페이지.css");
    </style>
</head>
<body>
    <h3>그림판입니다. 그림을 그려보세요</h3>
    <hr>
    <table>
        <tr>
            <td onclick = "changeColor(this)" style = "background-color : red"></td>
            <td onclick = "changeColor(this)" id = "darkred" style = "background-color : darkred"></td>
            <td onclick = "changeColor(this)" id = "orange" style = "background-color : orange"></td>
            <td onclick = "changeColor(this)" id = "yellow" style = "background-color : yellow"></td>
            <td onclick = "changeColor(this)" style = "background-color : olive"></td>
            <td onclick = "changeColor(this)" style = "background-color : purple"></td>
            <td onclick = "changeColor(this)" style = "background-color : violet"></td>
            <td onclick = "changeColor(this)" style = "background-color : white"></td>
            <td><input onchange = "changeColor2(this)" id = "color" type = "color"></td>
        </tr>
        <tr>
            <td onclick = "changeColor(this)" style = "background-color : green"></td>
            <td onclick = "changeColor(this)" style = "background-color : lightgreen"></td>
            <td onclick = "changeColor(this)" style = "background-color : blue"></td>
            <td onclick = "changeColor(this)" style = "background-color : skyblue"></td>
            <td onclick = "changeColor(this)" style = "background-color : darkcyan"></td>
            <td onclick = "changeColor(this)" style = "background-color : black"></td>
            <td onclick = "changeColor(this)" style = "background-color : lightgrey"></td>
            <td onclick = "changeColor(this)" style = "background-color : grey"></td>
        </tr>
    </table>
    <table>
        <tr><td id = "lineborder">선굵기</td><td id = "showcolor" rowspan="2"></td>
        <td><input id = "xpos" type = "text" value = "x = "></td></tr>
        <tr><td><input onchange = "changeBorder()" id = "border" type = "text"></td>
        <td><input id = "ypos" type = "text" value = "y = "></td></tr>
    </table>
    <canvas id = "canvas" width = "600" height = "600" style = "background-color: aliceblue;"></canvas>
    <script src = "그림판 웹 페이지.js"></script>
</body>
</html>
table{
    border : 1px solid lightgrey;
    background-color: rgba(211, 211, 211, 0.822);
    display : inline-block;
}
td{
    width : 30px;
    height : 30px;
    border : 1px solid lightgrey;
    margin : 0px;
}
#color{
    height : 30px;
    padding : 0px;
}
#lineborder{
    background-color: white;
    text-align: center;
}
#border{
    width : 50px;
}
#xpos, #ypos{
    width : 50px;
}
let canvas = document.getElementById("canvas");
let context = canvas.getContext("2d");
let td = document.getElementsByTagName("td");
let showcolor = document.getElementById("showcolor");
let lineBorder = document.getElementById("border");
let dragging = false;

        
function changeBorder(){
   context.lineWidth = lineBorder.value;
}
function changeColor(obj) {
    context.strokeStyle = obj.style.backgroundColor;
    showcolor.style.backgroundColor = context.strokeStyle;
}
function changeColor2(obj){
    context.strokeStyle = obj.value;
     showcolor.style.backgroundColor = context.strokeStyle;
}
canvas.onmousedown = function(e){
    dragging = true;
    context.beginPath();
    context.moveTo(e.offsetX, e.offsetY);
}
canvas.onmousemove = function(e){
    document.getElementById("xpos").value = "x = " + e.offsetX;
    document.getElementById("ypos").value = "y = " + e.offsetY;
    if(dragging == true){
        context.lineTo(e.offsetX, e.offsetY);
        context.stroke();
    }
}
canvas.onmouseout = function(e){
    dragging = false;
}
canvas.onmouseup = function(){
    dragging = false;
}

'CS Study > Projects' 카테고리의 다른 글

Project 10 : MP3 구현  (0) 2022.04.08
Project 9 : 단어장 만들기  (0) 2022.04.08
Project 7 : 상하좌우 키로 셀 이동하기  (0) 2022.04.08
Project 6 : 마우스 클릭 연습  (0) 2022.04.08
Project5 : Gambling game  (0) 2022.04.08