参考
1.canvas二次贝塞尔曲线闭合填充图形
//二层
dtx.beginPath();//一定要有开始
dtx.moveTo(380,200);
dtx.quadraticCurveTo(400,400,530,400);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#319096";
dtx.stroke();
dtx.fillStyle="#319096"
dtx.fill();
2.canvas三次贝塞尔曲线闭合填充图形
//三层
dtx.beginPath();
dtx.moveTo(200,375);
dtx.bezierCurveTo(280, 345, 350, 320, 530, 320);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#63aeb3";
dtx.stroke();
dtx.fillStyle="#63aeb3"
dtx.fill();
3.canvas二次+三次贝塞尔曲线闭合填充图形
//十二层
dtx.beginPath();
dtx.moveTo(280,200);
dtx.bezierCurveTo(340, 280, 380, 220, 440, 280);
dtx.quadraticCurveTo(480,330,530,360);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#f1ffff";
dtx.stroke();
dtx.fillStyle="#f1ffff";
dtx.fill();
4.canvas图片
var img=document.getElementById("imgs");
window.onload = function(){
//底图
dtx.drawImage(img,200,200,330,450);
}
图例
成果
下面得那堆剪纸效果偷懒没画,用的原图的,只画了上面那一半的
代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>傻狗</title>
<style type="text/css">
.right{
float:right;
width:50%;
height:1200px;
background-color:#0f5058;
}
</style>
</head>
<body>
<div class="right">
<canvas id="deer" width="700" height="1200"></canvas>
<img src="deer.jpg" id="imgs" style="display:none"></img>
<img src="small deer.png" id="png" style="display:none"></img>
</div>
<script type="text/javascript">
function draw(){
var d=document.getElementById("deer");
var dtx=d.getContext("2d");
var img=document.getElementById("imgs");
var png=document.getElementById("png");
window.onload = function(){
//白色背景
dtx.fillStyle="white";
dtx.fillRect(200,200,330,450);
//底图
dtx.shadowColor = "rgba(0,0,0,0.5)";
dtx.shadowOffsetX = 0;
dtx.shadowOffsetY = 20;
dtx.shadowBlur = 20;
dtx.drawImage(img,200,200,330,450);
//阴影
dtx.shadowColor = "rgba(0,0,0,0.3)";
dtx.shadowOffsetX = 0;
dtx.shadowOffsetY = 15;
dtx.shadowBlur = 30;
//1层
dtx.beginPath();
dtx.moveTo(420, 200); //起始点
var cp1x = 460, cp1y = 420; //控制点
var x = 530, y = 430; // 结束点
//绘制二次贝塞尔曲线
dtx.quadraticCurveTo(cp1x, cp1y, x, y);
dtx.lineTo(530,200);
dtx.closePath();
dtx.strokeStyle="#0d5f64";
dtx.stroke();
dtx.fillStyle="#0d5f64"
dtx.fill();
//二层
dtx.beginPath();
dtx.moveTo(380,200);
dtx.quadraticCurveTo(400,400,530,400);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#319096";
dtx.stroke();
dtx.fillStyle="#319096"
dtx.fill();
//三层
dtx.beginPath();
dtx.moveTo(200,375);
dtx.bezierCurveTo(280, 345, 350, 320, 530, 320);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#63aeb3";
dtx.stroke();
dtx.fillStyle="#63aeb3"
dtx.fill();
//四层
dtx.beginPath();
dtx.moveTo(200,380);
dtx.bezierCurveTo(350, 230, 140, 480, 460, 200);
dtx.lineTo(200,200);
dtx.lineTo(200,380);
dtx.closePath();
dtx.strokeStyle="#73c8cd";
dtx.stroke();
dtx.fillStyle="#73c8cd";
dtx.fill();
//五层
dtx.beginPath();
dtx.moveTo(230,200);
dtx.quadraticCurveTo(360,380,530,370);
dtx.lineTo(530,200);
dtx.closePath();
dtx.strokeStyle="#61ccd4";
dtx.stroke();
dtx.fillStyle="#61ccd4"
dtx.fill();
//六层
dtx.beginPath();
dtx.moveTo(200,280);
dtx.bezierCurveTo(480, 405, 304, 290, 530, 367);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#97f0f8";
dtx.stroke();
dtx.fillStyle="#97f0f8"
dtx.fill();
//七层
dtx.beginPath();
dtx.moveTo(200,320);
dtx.quadraticCurveTo(360,300,500,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#affaff";
dtx.stroke();
dtx.fillStyle="#affaff"
dtx.fill();
//八层
dtx.beginPath();
dtx.moveTo(470,200);
dtx.bezierCurveTo(500, 425, 500, 390, 530, 460);
dtx.lineTo(530,200);
dtx.closePath();
dtx.strokeStyle="#96dfe5";
dtx.stroke();
dtx.fillStyle="#96dfe5"
dtx.fill();
//九层
dtx.beginPath();
dtx.moveTo(200,300);
dtx.bezierCurveTo(280, 250, 300, 320, 530, 300);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#bcf4f7";
dtx.stroke();
dtx.fillStyle="#bcf4f7";
dtx.fill();
//十层
dtx.beginPath();
dtx.moveTo(200,250);
dtx.bezierCurveTo(360, 220, 380, 420, 530, 250);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#d2fbfd";
dtx.stroke();
dtx.fillStyle="#d2fbfd";
dtx.fill();
//十一层
dtx.beginPath();
dtx.moveTo(230,200);
dtx.bezierCurveTo(280, 310, 380, 260, 420, 300);
dtx.quadraticCurveTo(470,350,530,340);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#e4feff";
dtx.stroke();
dtx.fillStyle="#e4feff";
dtx.fill();
//十二层
dtx.beginPath();
dtx.moveTo(280,200);
dtx.bezierCurveTo(340, 280, 380, 220, 440, 280);
dtx.quadraticCurveTo(480,330,530,360);
dtx.lineTo(530,200);
dtx.lineTo(200,200);
dtx.closePath();
dtx.strokeStyle="#f1ffff";
dtx.stroke();
dtx.fillStyle="#f1ffff";
dtx.fill();
//shadow
dtx.shadowColor = "rgba(0,0,0,0)";
//鹿
dtx.drawImage(png,485,200,40,40);
//文字
dtx.fillStyle="#0d5f64";
dtx.font="10px Iskoola Pota";
dtx.fillText("10 /",445,245);
dtx.font="25px Iskoola Pota";
dtx.fillText("5",465,245);
dtx.font="9px Iskoola Pota";
dtx.fillText("October 15th",430,257);
dtx.font="23px Iskoola Pota";
dtx.fillText("|",483,253);
dtx.font="8px Iskoola Pota";
dtx.fillText("星 期 四",490,245);
dtx.font="9px Iskoola Pota";
dtx.fillText("Thursday",490,257);
dtx.beginPath();
dtx.moveTo(433,263);
dtx.lineTo(522,263);
dtx.strokeStyle="#0d5f64";
dtx.lineWidth=1;
dtx.stroke();
dtx.font="7px Iskoola Pota";
dtx.fillText("—",460,280);
dtx.font="7px Iskoola Pota";
dtx.fillText("不断的好奇",488,274);
dtx.font="7px Iskoola Pota";
dtx.fillText("不停的学习",488,286);
}
draw();
</script>
</body>
</html>