2
5x5ブロックが実際に最終画像の1ピクセルであるキャンバスをズームしたり、変数onclickに格納された色でピクセルを「ペイント」する方法は可能ですか?私がテストしたコードはストロークに終わり、何らかの理由で何もしません。単一ピクセルのキャンバスを描画する
5x5ブロックが実際に最終画像の1ピクセルであるキャンバスをズームしたり、変数onclickに格納された色でピクセルを「ペイント」する方法は可能ですか?私がテストしたコードはストロークに終わり、何らかの理由で何もしません。単一ピクセルのキャンバスを描画する
これは何か?
<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/
:追加された機能
デモをクリックします。 – jmoon
アンチエイリアスを完全に無効にする方法はありますか? – jmoon
@jmoon分かりません(実際は私はあなたができるとは思わない)が、より大きな幅/高さ(すべてが比例している)で大きなキャンバスを作って、20x20の四角形を描くことができます。なぜidが機能しないのかは、マウス座標(MouseEvent.x)の取得方法と関係があります。 –