博客
关于我
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/

你可能感兴趣的文章
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
MFC模态对话框和非模态对话框
查看>>
Moment.js常见用法总结
查看>>