2014年12月14日日曜日

お絵かきアプリにカラーパレットを追加しよう

HTMLで<input type="color">を書くことで、カラーパレットを追加することができるので、このカラーパレットをJavaScriptでつないで、お絵かきアプリの色変え機能として取り込んでみます。(ブラウザはChromeを推奨)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>draw</title>
<style>
#canvas {
    border: 1px solid #000000;
}
</style>
<script>
//コードは省略
</script>
</head>
<body>
<canvas id="canvas" width="400px" height="300px"></canvas><br>
<input id="pallet" type="color" value="#000000;">
</body>
</html>

canvasの下にカラーパレットのinputタグを追加することで、


canvasの下にカラーパレットを呼び出せるボタンが追加されました。あとはこのパレットで選択した色を描写の際に反映させます。

<script>
var canvas;
var ctx;

//パレット用の変数
var pallet;

var drawFlag = false;
window.onload = function(){

    canvas = document.querySelector("#canvas");
    ctx = canvas.getContext("2d");
    
    //ここでパレットのオブジェクトを取得しておく
    pallet = document.querySelector("#pallet");
    
    canvas.addEventListener("mousemove", function(event){
        if (drawFlag === true) {
            var x = event.offsetX;
            var y = event.offsetY;

            //パレットで決めた色を点の描写直前で決めておく
            ctx.fillStyle = pallet.value;
            ctx.fillRect(x, y, 2, 2);
        }
    });

    canvas.addEventListener("mousedown", function(event){
        drawFlag = true;
    });

    canvas.addEventListener("mouseup", function(event){
        drawFlag = false;
    });
};
</script>

パレットの値は他のアプリでフォームの取得の時と同様でdocument.querySelectorでオブジェクト取得、変数.valueで値を取得という手順をとり、点の描写直前でfillStyleプロパティにカラーコードを入れます。


これでいろんな色でお絵かきできる様になりました。

0 件のコメント:

コメントを投稿