canvas基础

页面布局

<canvas id="canvas" width="500px" height="300px"></canvas>

JS代码

let canvas = document.getElementById("canvas"); //获取画板
let ctx = canvas.getContext("2d"); //获取2d绘画对象
ctx.moveTo(100, 100); //设置起始点为100,100
ctx.lineTo(200, 100); //规划路径
ctx.stroke(); //画到画板上

//其他函数
ctx.closePath(); //自动闭合图案(必须是一笔)
ctx.BeginPath(); //另起一笔
ctx.lineWidth = 10; //设置当前笔画的粗细
ctx.fill(); //填充
		  //起始x 起始y 终点x 终点y 矩形左上角与右下角
ctx.clearRect(x0,  y0,  x1,    y1); //矩形橡皮擦

ctx.lineGap = ""; //线端样式  这俩属性值 自行百度
ctx.lineJoin = ""; //两条件交接处的样式

矩形

		//x    y    长   宽
ctx.rect(100, 100, 200, 100); //画矩形
ctx.fill(); //填充
ctx.stroke(); //渲染

ctx.strokeRect(100, 100, 200, 100); //矩形框,渲染
ctx.fillRect(100, 100, 200, 100); //矩形填充并渲染 

弧形与圆

/*
 * x: 圆心x y:圆心y r:半径 start:起始角度 end:结束角度 dirct: 0顺时针 1逆时针
 */
ctx.arc(x, y, r, start, end, dirct);
ctx.arc(100, 100, 50, 0, Math.PI, 0); //半圆弧

旋转平移(针对全局坐标系)

ctx.moveTo(100, 100); //移动到0 0
ctx.rorate(Math.PI / 6); //以0, 0点旋转 30度

ctx.translate(100, 100); //坐标系原点平移到100, 100
ctx.rorate(Math.PI / 6); //以100, 100点旋转 30度

save 与 restore

ctx.save(); //保存坐标系的平移旋转缩放数据

ctx.restore(); //恢复到上次保存的状态

填充

ctx.fillStyle = "rgb/rgba/#000000/red";

let img = new Image();
img.src = "";
img.onload = function () {
	//填充不重复的图片,以坐标原点0, 0开始平铺
	//ctx.translate(100, 100); //坐标系原点平移
	let bg = ctx.createPattern(img, "no-repeat");
	ctx.fillStyle = bg;
	ctx.fillRect(0, 0, 100, 50);
}
								//x0 y0 x1  y1
let bg = ctx.createLinearGradient(0, 0, 200, 0); //线性渐变
bg.addColorStop(0, "rgb/rgba/#000000/red"); //设置某点(0-1)的颜色
bg.addColorStop(0.5, "rgb/rgba/#000000/red");
bg.addColorStop(1, "rgb/rgba/#000000/red");

							    //x0 y0 r0 x1 y1 r1
let bg = ctx.createRadialGradient(0, 0, 0, 0, 0, 100); //径向渐变
bg.addColorStop(0, "rgb/rgba/#000000/red"); //设置某点(0-1)的颜色
bg.addColorStop(0.5, "rgb/rgba/#000000/red");  
bg.addColorStop(1, "rgb/rgba/#000000/red");

阴影

ctx.shadowColor = "rgb/rgba/#000000/red"; //阴影颜色
ctx.shadowBlur = 30; //阴影模糊值
ctx.shadowOffsetX = 10; //阴影x偏移
ctx.shadowOffsetY = 20; //阴影y偏移

文字

ctx.font = "30px 字体"; //设置文字字体大小与字体类型
			//内容      x    y
ctx.strokeText("文字", 100, 100); //文字描边
ctx.fillText("文字", 100, 200); //文字填充
上一篇:html--不透明度(rgba)与手势(cursor)与自适应宽高度写法


下一篇:echarts属性的设置