JavaScript 绘制 canvas

CANVAS

  • Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表、动画等

一、canvas 支持

  • 浏览器支持 canvas 的话里面的html元素就不会显示,不支持的话p标签里面的内容就能看到了
<canvas id="test-stock" width="300" height="200">
    <p>Current Price: 25.51</p>
</canvas>
  • js里面用 canvas.getContext 判断浏览器是否支持 canvas
var canvas = document.getElementById('test-canvas');
if (canvas.getContext) {
    console.log('你的浏览器支持Canvas!');
} else {
    console.log('你的浏览器不支持Canvas!');
}

二、canvas 绘制

1、绘制图形

在这里插入图片描述

var
    canvas = document.getElementById('test-shape-canvas'),
    ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, 200, 200); // 擦除(0,0)位置大小为200x200的矩形,擦除的意思是把该区域变为透明
ctx.fillStyle = '#dddddd'; // 设置颜色
ctx.fillRect(10, 10, 130, 130); // 把(10,10)位置大小为130x130的矩形涂色
// 利用Path绘制复杂路径:
var path=new Path2D();
path.arc(75, 75, 50, 0, Math.PI*2, true);
path.moveTo(110,75);
path.arc(75, 75, 35, 0, Math.PI, false);
path.moveTo(65, 65);
path.arc(60, 65, 5, 0, Math.PI*2, true);
path.moveTo(95, 65);
path.arc(90, 65, 5, 0, Math.PI*2, true);
ctx.strokeStyle = '#0000ff';
ctx.stroke(path);

2、绘制文字

在这里插入图片描述

ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowBlur = 2;
ctx.shadowColor = '#666666';
ctx.font = '24px Arial';
ctx.fillStyle = '#333333';
ctx.fillText('带阴影的文字', 20, 40);

3、复杂 canvas 绘制总结

  • 通过创建一个不可见的Canvas来绘图,然后将最终绘制结果复制到页面的可见Canvas中
  • 尽量使用整数坐标而不是浮点数
  • 可以创建多个重叠的Canvas绘制不同的层,而不是在一个Canvas中绘制非常复杂的图
  • 背景图片如果不变可以直接用<img>标签并放到最底层

参考文章
https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial
https://www.liaoxuefeng.com/wiki/1022910821149312/1023022423592576#0

发布了153 篇原创文章 · 获赞 51 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/stanwuc/article/details/104017126
今日推荐