2012-03-04 15 views
2

5x5ブロックが実際に最終画像の1ピクセルであるキャンバスをズームしたり、変数onclickに格納された色でピクセルを「ペイント」する方法は可能ですか?私がテストしたコードはストロークに終わり、何らかの理由で何もしません。単一ピクセルのキャンバスを描画する

答えて

3

これは何か?

<canvas id="canvas" style="width:100px; height:100px" width="5" height="5"></canvas> 

<script> 

    var canvas = document.getElementById("canvas"); 

    var context = canvas.getContext("2d"); 

    //Background 
    context.fillStyle = "#000"; 
    context.fillRect(0, 0, canvas.width, canvas.height); 



    canvas.addEventListener("click", function(e) { 

     var x = Math.floor(e.x * canvas.width/parseInt(canvas.style.width)); 
     var y = Math.floor(e.y * canvas.height/parseInt(canvas.style.height)); 


     //Zoomed in red 'square' 
     context.fillStyle = "#F00"; 
     context.fillRect(x, y, 1, 1); 

    }, true); 

</script> 

編集:これはFF10に動作しますが、IEで動作しないいくつかの奇妙な理由でhttp://jsfiddle.net/Cmpde/

+0

:追加された機能

デモをクリックします。 – jmoon

+0

アンチエイリアスを完全に無効にする方法はありますか? – jmoon

+0

@jmoon分かりません(実際は私はあなたができるとは思わない)が、より大きな幅/高さ(すべてが比例している)で大きなキャンバスを作って、20x20の四角形を描くことができます。なぜidが機能しないのかは、マウス座標(MouseEvent.x)の取得方法と関係があります。 –