Canvas 01

canvas元素

<canvas id="tutorial" width="150" height="150"></canvas>
  • canvas元素就是一个HTML标签,默认初始化的宽度为300px高度为150px
  • 我们可以使用css样式调整他的尺寸,但是如果CSS尺寸和画布尺寸不一致,可能会出现图像缩放,导致失真问题。(这点十分重要,涉及到绘图坐标的确认)
  • 可以指定canvas元素的width和height参数,避免绘制出来的图像扭曲。

默认内容

我们知道canvas标签能力已经被大部分浏览器支持,但是如果存在一些不支持的浏览器厂商,我们可以定义默认内容进行填充。

<canvas id="stockGraph" width="150" height="150">
  current stock price: $3.15 +0.15
</canvas>

<canvas id="clock" width="150" height="150">
  <img src="images/clock.png" width="150" height="150" alt="" />
</canvas>

只有当浏览器不支持canvas标签时,才会展示我们提供的默认内容。

标签不可以省略 否则其余文档部分都会被当做是替代内容。

渲染上下文 画笔(rendering context)

我们可以在canvas上提供的画布进行绘制和展示内容,其中有2D和3D的渲染上下文,本章节我们主要是讨论2D渲染上下文。

获取上下文

getContext方法获取对应的上下文 对于2D渲染上下文,类型为CanvasRenderingContext2D。

var canvas = document.getElementById("tutorial");
var ctx = canvas.getContext("2d");

我们可以判断当前canvas元素是否支持getContext方法,保证代码1健壮性

var canvas = document.getElementById("tutorial");

if (canvas.getContext) {
  var ctx = canvas.getContext("2d");
  // drawing code here
} else {
  // canvas-unsupported code here
}

实战例子

<html>
  <head>
    <title>Canvas tutorial</title>
    <script type="text/javascript">
      function draw() {
        var canvas = document.getElementById("tutorial");
        if (canvas.getContext) {
          var ctx = canvas.getContext("2d");
        }
      }
    </script>
    <style type="text/css">
      canvas {
        border: 1px solid black;
      }
    </style>
  </head>
  <body onload="draw();">
    <canvas id="tutorial" width="150" height="150"></canvas>
  </body>
</html>

获取文档节点中canvas元素的2D渲染上下文。 onload表示在页面加载结束后就会调用执行draw回调函数。

要求我们绘制两个矩形,其中一个带有透明度并且重合。

...
const ctx = canvas.getContext("2d")
ctx.fillStyle='rgb(200,0,0)'
ctx.fillRect(10,10,50,50)

ctx.fillStyle='rgba(0,0,200,0.5)'
ctx.fillRect(30,30,50,50)

写在最后

上面主要讲解关于canvas标签的基本概念,以及使用的注意事项。 我们后续文章还是围绕着我们2D渲染上下文进行我们在canvas上的图形绘制和内容展示。 希望大家好好生活,健康快乐。