HTML5のcanvasを使って文字キャンバスを作りました。
dotinstallのCanvasでお絵かきアプリで作ったものを文字用に改造。
(注)↓これはスクリーンショットなので反応しません。
色は黒、赤の二色にして 線の太さは3種
「一時保存」をクリックするとサムネイルで一時保存されます。
(ページをリロードすると消えます。)
サムネイルをクリックするとダウンロードもできます。
(ブラウザが対応している必要があります。)
マス目はstroke()メソッドで書いて表示するプログラムなので
太線で書いた後、消去するとマス目線が太線になってしまいます。
細い線で引き直す設定にすると今度は選択した線の太さが「細」に戻って
しまうので、多少のご不便ご容赦ください。
細くしたい場合はリロードしてください。
プログラムはこうです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>文字用キャンバス</title> <style> #mycanvas{ border: 10px solid #999; cursor: crosshair; } .thumbnail{ border: 2px solid #999; margin-right: 5px; } </style> </head> <body> <p> <select id="penColor"> <option value="black">黒</option> <option value="red">赤</option> </select> <select id="penWidth"> <option value="1">細</option> <option value="3">中</option> <option value="5">太</option> </select> <input type="button" id="erase" value="消去"> <input type="button" id="save" value="一時保存"> </p> <canvas width="290" height="292" id="mycanvas"> Canvasに対応したブラウザを用意してください。 </canvas> <div id="gallery"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script> $(function(){ var canvas=document.getElementById('mycanvas'); if(!canvas||!canvas.getContext) return false; var ctx=canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(150,0); ctx.lineTo(150,300); ctx.moveTo(0,150); ctx.lineTo(300,150); ctx.strokeStyle="silver"; ctx.stroke(); var startX, startY, x, y, borderWidth=10, isDrawing=false; $('#mycanvas').mousedown(function(e){ isDrawing=true; startX=e.pageX-$(this).offset().left-borderWidth; startY=e.pageY-$(this).offset().top-borderWidth; }) .mousemove(function(e){ if(!isDrawing) return; x=e.pageX-$(this).offset().left-borderWidth; y=e.pageY-$(this).offset().top-borderWidth; ctx.beginPath(); ctx.moveTo(startX,startY); ctx.lineTo(x,y); ctx.strokeStyle="black"; ctx.stroke(); startX=x; startY=y; }) .mouseup(function(){ isDrawing=false; }) .mouseleave(function(){ isDrawing=false; }); $('#penColor').change(function() { ctx.strokeStyle=$(this).val(); }); $('#penWidth').change(function() { ctx.lineWidth=$(this).val(); }); $('#erase').click(function () { if(!confirm('本当に消しますか?')) return; ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.beginPath(); ctx.moveTo(150,0); ctx.lineTo(150,300); ctx.moveTo(0,150); ctx.lineTo(300,150); ctx.strokeStyle="silver"; ctx.stroke(); }); $("#save").click(function(){ var img=$('<img>').attr({ width:50, height:50, src:canvas.toDataURL() }); var link=$('<a>').attr({ href:canvas.toDataURL().replace('image/png','application/octet-stream'), download:new Date().getTime()+'.png' }); $('#gallery').append(link.append(img.addClass('thumbnail'))); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.beginPath(); ctx.moveTo(150,0); ctx.lineTo(150,300); ctx.moveTo(0,150); ctx.lineTo(300,150); ctx.strokeStyle="silver"; ctx.stroke(); }); }); </script> </body> </html>
リンクバナーをサイト上に表示
副ウィジェットのテキストを使う
別ウィンドウで開くほうが使い易いので
<a class="banner" href ="http://penjimiti.com/moji-canvas.html" target="_blank">
バナーのリンクにtarget=”_blank”追加
ウィンドウの左端に表示されますので、小さくして使ってください。