Canvas简介与基本使用(上)

简介: Canvas简介与基本使用

1. Canvas简介


canvas 是 HTML5 新增的一个标签,可以使用JavaScript来绘制各种图案。


2. Canvas 和 SVG 的区别


svg 本质上是一种使用 XML 描述 2D 图形的语言

1.svg 创建的每一个元素都是一个独立的 DOM 元素,可以通过 css 和 JS来操控 dom。

2.修改 svg 中的 DOM 元素,系统会自动进行 DOM 重绘。


Canvas 通过 JavaScript 来绘制 2D 图形

1.Canvas 只是一个 HTML 元素,其中的图形不会单独创建 DOM 元素,因此不能通过 JS 操控 Canvas 内单独的图形。

2.一旦图形被绘制完成,如果数据发生变化就需要重新绘制。


使用场景

如果要展示的数据量比较大,比如一条数据就是一个元素节点,那使用 canvas 会比较合适;

如果用户操作的交互比较多,而且对清晰度有要求(矢量图),那么使用 svg 会比较合适。


3. Canvas基本使用


3.1 创建Canvas


<!DOCTYPE html>
<html lang="en">
<head>
  <title>canvas 基本使用</title>
</head>
<body>
  <canvas width="200" height="200">
    当前浏览器不支持canvas元素,请升级或更换浏览器!
  </canvas>
</body>
</html>

效果


画布大小

canvas 默认画布大小是 300 * 150。


调整画布大小有两种方案:


第一种 : 通过 css 样式 ( 不推荐 )

<html>
<head>
    <style>
        canvas {
            width: 400px;
            height: 400px;
        }
    </style>
</head>
<body>
    <canvas></canvas>
</body>
</html>

使用CSS来定义大小,在绘制时图像会伸缩:如果 CSS 的尺寸与初始画布的比例不一致,它会出现扭曲。

比如本例变成 400px * 400px,那宽度就由 300px 拉伸到 400px,高度由 150px 拉伸到 400px。


第二种 : 通过标签属性 ( 推荐 )

<html>
<head>
    ...
</head>
<body>
    <canvas width="400" height="400"></canvas>
</body>
</html>

所以,使用canvas 元素提供的 width 和 height 两个属性,来设置画布的宽高。


3.2 渲染上下文


创建了一个 Canvas 画布,接下来就是获取到 Canvas 的上下文环境,通过getContext() 获得渲染上下文和绘画功能。

<html>
<head>
    ...
</head>
<body>
    <canvas width="400" height="400"></canvas>
</body>
</html>

上下文类型:


2d:建立一个二维渲染上下文。

webgl: 创建一个 WebGLRenderingContext 三维渲染上下文对象。

webgl2:创建一个 WebGL2RenderingContext 三维渲染上下文对象;只在实现 WebGL 版本2 (OpenGL ES 3.0)的浏览器上可用。


3.3 画布坐标


Canvas 使用的是 W3C 坐标系 ,也就是遵循我们屏幕、报纸的阅读习惯,从上往下,从左往右,左上角为原点。


3.4 绘制直线


最简单的就是绘制一条直线。

需要用到这3个方法:


moveTo(x, y):设置初始位置。

lineTo(x, y):下一个点的坐标 (x, y)。

stroke():通过线条来绘制图形轮廓。

<canvas id="canvas" width="400" height="400"></canvas>
<script>
  // 获取 canvas 元素
  var canvas = document.getElementById('canvas');
  // 获取绘图上下文
  var ctx = canvas.getContext('2d');
  // 绘制直线
  ctx.moveTo(50, 50);
  ctx.lineTo(200, 200);
  ctx.stroke();
</script>
相关文章
|
前端开发
Canvas简介与基本使用(下)
Canvas简介与基本使用
73 0
|
前端开发 JavaScript
Layui之组件的基本使用及案例演示1
Layui之组件的基本使用及案例演示1
109 0
|
前端开发 JavaScript
Layui之组件的基本使用及案例演示2
Layui之组件的基本使用及案例演示2
89 0
|
6月前
|
XML 前端开发 图形学
技术笔记:Unity(一)介绍与基本使用
技术笔记:Unity(一)介绍与基本使用
|
7月前
|
前端开发
css sprite 的优缺点,使用方法和示例
css sprite 的优缺点,使用方法和示例
68 1
|
JavaScript 前端开发 编译器
Swiper插件的基本使用方法和案例(一)
Swiper插件的基本使用方法和案例
|
Web App开发 前端开发 API
SVG 入门基础(一)
SVG 入门基础(一)
149 0
|
移动开发 前端开发 JavaScript
leaflet使用domtoimage插件与h5 canvas实现截图功能并下载
leaflet使用domtoimage插件与h5 canvas实现截图功能并下载
|
Web App开发 前端开发 JavaScript
canvas 快速入门
canvas 快速入门
canvas 快速入门