第一章 基础知识

第九节 打印Canvas的内容

    程序清单1-11 使用toDataURL()方法将canvas的内容打印出来(HTML代码)

    <!DOCTYPE html>

       <head>

         <title>Clock</title>

         <style>

        body {

           background: #dddddd;

        }

        #canvas {

           position: absolute;

           left: 10px;

           top: 1.5em;

           margin: 20px;

           border: thin solid #aaaaaa;

        }

        #snapshotImageElement {

           position: absolute;

           left: 10px;

           top: 1.5em;

           margin: 20px;

           border: thin solid #aaaaaa;

        }

    </style>

</head>

<body>

    <div id='controls'>

      <input id='snapshotButton' type='button'value='Take snapshot'/>

    </div>

    <img id='snapshotImageElement'/>

    <canvas id='canvas' width='400' height='400'>

      Canvas not supported

    </canvas>

    <script src='example.js'></script>

  </body>

</html>

程序清单1-12 使用toDataURL()方法将canvas的内容打印出来(JavaScript代码)

var canvas = document.getElementById('canvas'),

    context = canvas.getContext('2d'),

    snapshotButton =document.getElementById('snapshotButton'),

    snapshotImageElement =

       document.getElementById('snapshotImageElement'),

    loop;

// Clock drawing functions are omitted from this listing

// in the interests of brevity. See Example 1.4

// for a complete listing of those methods.

// Event handlers.....................................................

snapshotButton.onclick = function (e) {

   var dataUrl;

   if (snapshotButton.value === 'Take snapshot') {

      dataUrl = canvas.toDataURL();

      clearInterval(loop);

      snapshotImageElement.src = dataUrl;

      snapshotImageElement.style.display ='inline';

      canvas.style.display = 'none';

      snapshotButton.value = 'Return to Canvas';

   }

   else {

      canvas.style.display = 'inline';

      snapshotImageElement.style.display = 'none';

      loop = setInterval(drawClock, 1000);

      snapshotButton.value = 'Take snapshot';

   }

};