canvas练习第2天--剪纸风格海报(无动效)

参考

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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值