Canvas要素のマウスクリックされた位置へinput要素の文字を挿入する。
<p id="tool"> Text: <input id="text" name="text" type="text" value="Example"> | Size: <input id="size" name="size" type="text" size="3" value="14"> | Color: <input id="color" name="color" type="text" size="7" value="#000"> </p> <canvas id="canvas" name="canvas" width="200" height="200"></canvas> < p id="clear"><button>Clear</button>
<h1>tool {</h1> <pre><code>margin: 20px 20px 10px; </code></pre> } <h1>canvas {</h1> <pre><code>margin: 10px 20px; border: 2px dotted #DDD; </code></pre> } <h1>clear {</h1> <pre><code>margin: 10px 20px; </code></pre> }
/** * set Canvas */ var canvas, cxt; (function() { canvas = $('#canvas'); cxt = canvas.get(0).getContext('2d'); }()); /** * draw text */ canvas.click(function(e) { var pos; // to do error check<br /> // draw text pos = getMousePosition(e, canvas.get(0)); drawText(pos); }); function drawText(pos) { var text, size, color; <pre><code>text = $('#text').val(); size = $('#size').val(); color = $('#color').val(); text = (text === '') ? 'Example' : text; color = (color === '') ? '#000' : color; size = (size === '') ? '14px' : parseInt(size, 10) + 'px'; cxt.clearRect(0, 0, canvas.width, canvas.height); cxt.font = size + ' "sans-serif"'; cxt.fillStyle = color; cxt.fillText(text, pos.x, pos.y); </code></pre> } // get mouse click position function getMousePosition(mouseEvent, targetCanvas) { var x, y; if (mouseEvent.pageX != undefined && mouseEvent.pageY != undefined) { x = mouseEvent.pageX; y = mouseEvent.pageY; } else { x = mouseEvent.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; y = mouseEvent.clientY + document.body.scrollTop + document.documentElement.scrollTop; } <pre><code>return { x: x - targetCanvas.offsetLeft, y: y - targetCanvas.offsetTop }; </code></pre> } // clear canvas text $('#clear button').click(function() { cxt.clearRect(0, 0, canvas.width(), canvas.height()); })
» HTML 5 Canvas – A Simple Paint Program (Touch and Mouse) – CodeProject
» jsFiddle
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。