开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
canvas继续学习中,记录学习历程。今天我学着用canvas来画一个七巧板,用刚刚学习的lineTo()属性来绘制七巧板。
绘制直线线段来 lineTo(x,y) 绘制点的坐标,同时配合fill()属性一起来绘制。话不多说,我们先看一下我们绘制的例子。我们学着绘制相似的图形
<canvas id="canvas" width="600" height="600" style="background-color:#f1f1f1 ;"></canvas>
下面开始我们的绘制
let c1=document.getElementById('canvas');
let ctx=c1.getContext('2d');
//1.canvas定义宽高都是600,
//2.把绘制的起点定在100,100 这个坐标上。
//3.定义此七巧板是200*200
//4.必须要使用beginPath和closePath这两个。
1.我先绘制最上面橘黄色的大三角形。
//我们的起点是坐标100,100,
ctx.beginPath();
ctx.moveTo(100,100);
//三角形的右端坐标
ctx.lineTo(300,100);
//三角形的下面那个点的坐标。(这个坐标也是我们七巧板的中心坐标)
ctx.lineTo(200,200);
//填充为橘黄色
ctx.fillStyle="orange";
ctx.fill();
ctx.closePath();
我们这样就看到一个橘黄色的大三角形出现了。下面我们继续绘制。
//开始绘制左侧青色的大三角形。
ctx.beginPath();
//我们把绘制的点移动到200,200 这个坐标上
ctx.moveTo(200,200);
//左侧三角形最下面那个点的坐标
ctx.lineTo(100,300);
//左侧三角形最上面的那个点
ctx.lineTo(100,100)
//填充为青色。
ctx.fillStyle="#20896A";
ctx.fill();
ctx.closePath();
这样我们就把左侧的两个大三角形都绘制结束了。看一下效果。
现在我们开始绘制右侧的这些图形。我们先在最下面的黑色三角形开始。
ctx.beginPath();
//把点移动到黑色三角形最左侧的点
ctx.moveTo(100,300)
//绘制直线到右侧的坐标
ctx.lineTo(200,300);
//绘制直线到三角形最上面的那个点
ctx.lineTo(150,250)
//填充为黑色
ctx.fillStyle='black';
ctx.fill();
ctx.closePath();
绘制小正方形
ctx.beginPath();
//把点移动到正方形最左边的这个点
ctx.moveTo(150,250);
//绘制直线到200,200 这个坐标点
ctx.lineTo(200,200)
//绘制直线到250,250这个坐标点
ctx.lineTo(250,250);
//绘制直线到200,300这个坐标点
ctx.lineTo(200,300);
//填充为黄色
ctx.fillStyle="yellow";
ctx.fill();
ctx.closePath();
绘制正方形右侧的紫色的小三角形
ctx.beginPath();
//把点移动到200,200这个点
ctx.moveTo(200,200);
//绘制到250,150 三角形最上面的那个点
ctx.lineTo(250,150);
//绘制线段到250,250 三角形最下面的那个点
ctx.lineTo(250,250);
//填充为紫色
ctx.fillStyle="purple";
ctx.fill();
ctx.closePath();
绘制右上角的平行四边形
ctx.beginPath();
//点移动到250,150 平行四边形左边上面的点
ctx.moveTo(250,150);
//绘制直线到右上侧的那个点
ctx.lineTo(300,100);
//绘制直线到300,200 这个点
ctx.lineTo(300,200);
//绘制线段到250,250这个点
ctx.lineTo(250,250);
//填充为蓝色
ctx.fillStyle="blue";
ctx.fill();
ctx.closePath();
//我们下面绘制最右侧的三角形
ctx.beginPath();
//移动点到200,300的位置,三角形最左边的这个点
ctx.moveTo(200,300);
//绘制线段到300,300 最右侧的这个点
ctx.lineTo(300,300);
//绘制线段到三角形最右侧上面的那个点
ctx.lineTo(300,200);
ctx.fillStyle="red";
ctx.fill();
ctx.closePath();
我们最终的效果就是这样的
记录一下canvas学习的过程。