HTML 5 Canvasホワイトボード

6474 ワード

多くのホワイトボードの例を見て、保存に関する例はありませんが、私の考えは配列を使ってマウスの絵を描くときの軌跡座標を記録し、配列を操作し、具体的にどのように配列の中のデータをデータベースに保存するか、みんなが神通力しているか、私はあまり言いません.今唯一心配なのは、この配列がどれだけのデータを保存できるかということです.私がテストしたところでは、配列が2万個以内では影響がないということで、その後は言いにくいのですが・・・まず次のサンプルを見て、その後は改善しています.
DOCTYPE HTML>    
<html>   
<head>   
<title>Titletitle>  
<style type="text/css">
    body{
    position: absolute;
    margin:0px;
    left:0px;
    top:0px;
    }
style>
<script type="text/javascript"> 
var ctx;  
var mycanvas;
var dtx;
var xy = new Array();  //          
//var tts;
var x ; //  X  
var y ;//  Y  

window.οnlοad=function(){
dtx = document.getElementById("drawCanvas").getContext("2d");
mycanvas = document.getElementById("myCanvas");
ctx = mycanvas.getContext("2d");
ctx.lineWidth = 1; //  
dtx.lineWidth = 1;
//ctx.lineCap = "round"; //    
//tts = document.getElementById("tts");  //    
mycanvas.onmousedown = startmove;   //  mycanvas       
document.documentElement.onmouseup = stopmove;  //        
}


//    
function drowPad(e)
{
   ctx.save();
   ctx.beginPath();
   ctx.moveTo(x,y);
   ctx.lineTo(e.clientX-2,e.clientY-2); //cilentX             ,    mycanvas    2  ,     2
   ctx.stroke();
   x = e.clientX-2;
   y = e.clientY-2;
   ctx.restore();
   xy.push([x,y]);//        
   //tts.innerHTML = x+","+y;
}

//       
function startmove(e)
{
    x = e.clientX-2; //             
    y = e.clientY-2;
    xy.push([x,y]);//     
    mycanvas.onmousemove = drowPad;//  mycanvas       
    
}

//          
function stopmove(e)
{
    mycanvas.onmousemove = null; //  mycanvas        
    xy.push([0.1,0]);//          ,          ,       
}



//                    
function drowDTX()
{
dtx.clearRect(0,0,400,300); //   mycanvas,          
 dtx.save();
    
    for(var a = 0; a < xy.length; a++)
    {
       
        if(xy[a+1][0] == 0.1) //                     
        {
            a+=2;
            continue;
        }
        if(xy[a][0] == 0.1)  //                     
        {
            a++;
            continue;
        }
        dtx.beginPath();
        dtx.moveTo(xy[a][0],xy[a][1]);
        dtx.lineTo(xy[a+1][0],xy[a+1][1]);
        dtx.stroke();
    }
    dtx.restore();
//tts.innerHTML = xy.length; 
}


script>   
head>   
<body  onselectstart = "return false;">   
<canvas  style="border: 2px solid #000000"  id="myCanvas" width="400" height="300">      canvas  canvas>
<canvas  style="border: 2px solid #000000"  id="drawCanvas" width="400" height="300">      canvas  canvas>

<p id="tts">p>
<input type="button" value="  " onclick="drowDTX()">
body>   
html>   

転載先:https://www.cnblogs.com/x-man/archive/2012/01/06/2314922.html