Appearance
实例:直线图形-直线 案例
绘制三角形
步骤
- moveTo(50, 50)
- lineTo(150, 50)
- moveTo(150, 100)
- lineTo(50, 100)
html
<canvas id="canvas03-01" width="200"></canvas>
js
const cnv = $$('canvas03-01');
const cxt = cnv.getContext('2d');
cxt.moveTo(50, 100);
cxt.lineTo(150, 50);
cxt.lineTo(150, 100);
cxt.lineTo(50, 100);
cxt.stroke();
效果图:
绘制矩形
步骤
- moveTo(50, 50)
- lineTo(150, 50)
- lineTo(150, 100)
- lineTo(50, 100)
- lineTo(50, 50)
html
<canvas id="canvas03-02" width="200"></canvas>
js
const cnv = $$('canvas03-02');
const cxt = cnv.getContext('2d');
cxt.moveTo(50, 50);
cxt.lineTo(150, 50);
cxt.lineTo(150, 100);
cxt.lineTo(50, 100);
cxt.lineTo(50, 50);
cxt.stroke();
效果图:
绘制箭头
步骤
- cxt.moveTo(40, 60);
- cxt.lineTo(100, 60);
- cxt.lineTo(100, 30);
- cxt.lineTo(150, 75);
- cxt.lineTo(100, 120);
- cxt.lineTo(100, 90);
- cxt.lineTo(40, 90);
- cxt.lineTo(40, 60);
- cxt.stroke();
html
<canvas id="canvas03-03" width="200"></canvas>
js
const cnv = $$('canvas03-03');
const cxt = cnv.getContext('2d');
cxt.moveTo(40, 60);
cxt.lineTo(100, 60);
cxt.lineTo(100, 30);
cxt.lineTo(150, 75);
cxt.lineTo(100, 120);
cxt.lineTo(100, 90);
cxt.lineTo(40, 90);
cxt.lineTo(40, 60);
cxt.stroke();
效果图:
正多边形的绘制
需要封装一个方法,传入绘制参数就可以直接绘制
js
createPolygon(cxt, n, dx, dy, size)
参数说明
- cxt是绘制上下文
- n是边数
- dx和dy是中心点坐标
- size是外接圆的半径大小
绘制
html
<canvas id="canvas03-04" width="200"></canvas>
js
function createPolygon(cxt, n, dx, dy, size) {
cxt.beginPath()
const degree = (2 * Math.PI) / n;
for(let i = 0; i < n; i++) {
const x = Math.cos(i * degree);
const y = Math.sin(i * degree);
cxt.lineTo(x * size + dx, y * size + dy);
}
cxt.closePath()
}
window.onload = function() {
const cnv = $$('canvas03-04');
const cxt = cnv.getContext('2d');
createPolygon(cxt, 3, 100, 75, 50);
cxt.fillStyle = 'hotpink';
cxt.fill();
}
效果图:
五角星的绘制
需要封装一个方法,传入绘制参数就可以直接绘制
js
createStar(cxt, dx, dy, size)
参数说明
- cxt是绘制上下文
- dx和dy是中心点坐标
- size是外接圆的半径大小
绘制
html
<canvas id="canvas03-05" width="200"></canvas>
js
function createStar(cxt, dx, dy, size) {
cxt.beginPath()
for(let i = 0; i < 5; i++) {
const x = Math.cos((18 + i * 72) * Math.PI / 180);
const y = -Math.sin((18 + i * 72) * Math.PI / 180);
cxt.lineTo(x * size + dx, y * size + dy);
const x1 = Math.cos((54 + i * 72) * Math.PI / 180);
const y1 = -Math.sin((54 + i * 72) * Math.PI / 180);
cxt.lineTo(x1 * size / 2 + dx, y1 * size / 2 + dy);
}
cxt.closePath()
}
window.onload = function() {
const cnv = $$('canvas03-05');
const cxt = cnv.getContext('2d');
createStar(cxt, 100, 75, 50);
cxt.fillStyle = 'hotpink';
cxt.fill();
}
效果图: