博客
关于我
Canvas画布(一)基本用法
阅读量:594 次
发布时间:2019-03-11

本文共 2272 字,大约阅读时间需要 7 分钟。

Canvas绘图入门教程

1. Canvas基础使用

在开始绘图之前,首先需要设置Canvas的宽高。可以通过设置widthheight属性来指定绘制区域的大小,或者通过JavaScript动态设置以跟随窗口大小变化。对于不支持Canvas的浏览器,可以添加友好的提示信息。

示例代码

let canvas = document.querySelector('#mycanvas');canvas.width = window.innerWidth;canvas.height = window.innerHeight;window.addEventListener('resize', function () {    canvas.width = window.innerWidth;    canvas.height = window.innerHeight;});if (!canvas.getContext) return;let ctx = canvas.getContext('2d');// 获取像素数据let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);// 获取图像数据URLlet imgURL = canvas.toDataURL('image/png');

2. 绘制元素

Canvas支持多种绘制元素,包括直线、矩形、圆、贝塞尔曲线、图片、文本等。以下是常用元素的绘制方法示例。

2.1 直线

ctx.strokeStyle = 'green';ctx.lineWidth = '10';ctx.lineJoin = 'round';ctx.lineCap = 'round';ctx.beginPath();ctx.moveTo(50, 50);ctx.lineTo(100, 100);ctx.stroke();

2.2 矩形

ctx.strokeStyle = 'black';ctx.lineWidth = '2';ctx.strokeRect(10, 10, 200, 100);

2.3 圆

ctx.beginPath();ctx.arc(300, 300, 50, 0, Math.PI * 2);ctx.stroke();

2.4 贝塞尔曲线

ctx.beginPath();ctx.bezierCurveTo(    50, 50,     200, 150,     150, 300);ctx.stroke();

2.5 图片

let img = new Image();img.src = './image/0.jpg';img.onload = function () {    let pattern = ctx.createPattern(img, 'repeat');    ctx.fillStyle = pattern;    ctx.fillRect(0, 0, 200, 200);    ctx.drawImage(img, 0, 300, 100, 100);};

2.6 文本

ctx.fillStyle = 'black';ctx.font = '20px Arial';ctx.textAlign = 'center';ctx.textBaseline = 'middle';ctx.fillText('欢迎访问我们的网站', canvas.width/2, canvas.height/2);

3. 渐变与样式状态

Canvas支持线性渐变和径向渐变,可以通过createLinearGradientcreateRadialGradient创建,并将其应用于填充或描边。

3.1 线性渐变

let gra = ctx.createLinearGradient(800, 10, 1000, 10);gra.addColorStop(0, 'red');gra.addColorStop(1, 'blue');ctx.fillStyle = gra;ctx.fillRect(800, 0, 200, 400);

3.2 径向渐变

let gra = ctx.createRadialGradient(900, 50, 50, 900, 50, 100);gra.addColorStop(0, 'red');gra.addColorStop(0.5, 'green');gra.addColorStop(1, 'blue');ctx.fillStyle = gra;ctx.fillRect(800, 0, 300, 400);

4. 组合操作

globalCompositeOperation属性用于控制新绘制内容与旧内容的混合方式。常用的值包括'source-over''destination-over'等。

示例

ctx.globalCompositeOperation = 'lighter';ctx.fillStyle = 'red';ctx.fillRect(50, 50, 100, 100);ctx.fillStyle = 'green';ctx.fillRect(100, 100, 100, 100);

通过设置不同的globalCompositeOperation值,可以实现不同的混合效果,如'lighter'会显示两种颜色的重叠部分混合后的效果。

转载地址:http://jmctz.baihongyu.com/

你可能感兴趣的文章
Moment.js常见用法总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
mxGraph改变图形大小重置overlay位置
查看>>
MongoDB可视化客户端管理工具之NoSQLbooster4mongo
查看>>
Mongodb学习总结(1)——常用NoSql数据库比较
查看>>
MongoDB学习笔记(8)--索引及优化索引
查看>>
mongodb定时备份数据库
查看>>
mppt算法详解-ChatGPT4o作答
查看>>
mpvue的使用(一)必要的开发环境
查看>>
MQ 重复消费如何解决?
查看>>
mqtt broker服务端
查看>>
MQTT 保留消息
查看>>
MQTT 持久会话与 Clean Session 详解
查看>>
MQTT工作笔记0007---剩余长度
查看>>
MQTT工作笔记0009---订阅主题和订阅确认
查看>>
Mqtt搭建代理服务器进行通信-浅析
查看>>
MS Edge浏览器“STATUS_INVALID_IMAGE_HASH“兼容性问题
查看>>
ms sql server 2008 sp2更新异常
查看>>
MS UC 2013-0-Prepare Tool
查看>>
MSBuild 教程(2)
查看>>