用canvas画个山寨版的猪八戒,随便玩玩的。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>用canvas画个山寨版的猪八戒 - Web前端之家</title>
<style type="text/css">
#canvas{
border: 1px solid #ADACBD;
display: block;
margin: 20px auto;
}
</style>
</head>
<body>
<canvas id="canvas" width = "600" height = "600"></canvas>
<script type="text/javascript">
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
function coordinate () {
ctx.moveTo(0,300);
ctx.lineTo(600,300);
ctx.moveTo(300,0);
ctx.lineTo(300,600);
}
function drawBelly(x0,y0){//画肚子
ctx.beginPath();
ctx.fillStyle = "#F8B4AB";
ctx.moveTo(x0,y0-150);
ctx.bezierCurveTo(x0-100,y0-150,x0-150,y0 + 100,x0,y0 + 100);
ctx.moveTo(x0,y0-150);
ctx.bezierCurveTo(x0+100,y0-150,x0+150,y0 + 100,x0,y0 + 100);
ctx.fill();
ctx.moveTo(x0-60,y0-90);
ctx.bezierCurveTo(x0-50,y0-70,x0-40,y0 - 70,x0-20,y0-90);
ctx.moveTo(x0+60,y0-90);
ctx.bezierCurveTo(x0+50,y0-70,x0+40,y0 - 70,x0+20,y0-90);
ctx.stroke();
ctx.beginPath();
ctx.arc(x0,y0+40,5,0,Math.PI*2);
ctx.stroke();
}
function drawHead(x0,y0){//画头
//耳朵
ctx.beginPath();
ctx.fillStyle = "#F8B4AB";
ctx.moveTo(x0-35,y0-220)
ctx.bezierCurveTo(x0-60,y0-220,x0- 93,y0-180,x0-42,y0-160);
ctx.moveTo(x0+35,y0-220)
ctx.bezierCurveTo(x0+60,y0-220,x0+ 93,y0-180,x0+42,y0-160);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.moveTo(x0-36,y0-195);
ctx.quadraticCurveTo(x0-60,y0-195,x0-69,y0-185);
ctx.moveTo(x0+36,y0-195);
ctx.quadraticCurveTo(x0+60,y0-195,x0+69,y0-185)
ctx.stroke();
//头
ctx.beginPath();
ctx.fillStyle = "#F8B4AB";
ctx.moveTo(x0,y0-240);
ctx.bezierCurveTo(x0-60,y0-240,x0 -60,y0 - 120,x0,y0 - 120);
ctx.moveTo(x0,y0-240);
ctx.bezierCurveTo(x0 + 60,y0-240,x0+60,y0 - 120,x0,y0 - 120);
ctx.fill();
ctx.stroke();
//眉毛
ctx.moveTo(x0-30,y0-220);
ctx.lineTo(x0-15,y0-210);
ctx.moveTo(x0+30,y0-220);
ctx.lineTo(x0+15,y0-210);
ctx.moveTo(x0-40,y0-190);
ctx.quadraticCurveTo(x0-30,y0-200,x0-10,y0-190);
ctx.moveTo(x0+40,y0-190);
ctx.quadraticCurveTo(x0+30,y0-200,x0+10,y0-190);
ctx.moveTo(x0-10,y0-170);
ctx.quadraticCurveTo(x0-25,y0-175,x0-40,y0-150);
ctx.moveTo(x0+10,y0-170);
ctx.quadraticCurveTo(x0+25,y0-175,x0+40,y0-150);
ctx.stroke();
//鼻子
ctx.beginPath();
ctx.arc(x0,y0-145,16,0,Math.PI*2);
ctx.stroke();
ctx.beginPath();
ctx.arc(x0-6,y0-145,3,0,Math.PI*2);
ctx.stroke();
ctx.beginPath();
ctx.arc(x0+6,y0-145,3,0,Math.PI*2);
ctx.stroke();
}
function drawClothes(x0,y0) {
ctx.beginPath();
ctx.fillStyle = "#363B34";
ctx.moveTo(x0-48,y0-130);
ctx.bezierCurveTo(x0-100,y0-130,x0-180,y0,x0 -70,y0 + 70);
ctx.moveTo(x0+48,y0-130);
ctx.bezierCurveTo(x0+100,y0-130,x0+180,y0,x0 +70,y0 + 70);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = "#363B34";
ctx.moveTo(x0-75,y0+66);
ctx.bezierCurveTo(x0-88,y0+140,x0+88,y0+140,x0+75,y0+66)
ctx.fill();
ctx.stroke();
}
function drawLeg(x0,y0){//画腿
ctx.beginPath();
ctx.fillStyle = "#F8B4AB";
ctx.arc(x0-36,y0+129,16,-Math.PI*0.2,Math.PI*0.2,false);
ctx.arc(x0-39,y0+128,18,Math.PI*0.8,Math.PI*1.4,false);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.arc(x0+36,y0+129,16,Math.PI*0.8,Math.PI*1.2);
ctx.arc(x0+39,y0+128,18,-Math.PI*0.4,Math.PI*0.19);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.fillStyle = "#363B34";
ctx.strokeStyle = "#363B34";
ctx.arc(x0-60,y0+153,14,Math.PI*0.5,Math.PI*1.5);
ctx.rect(x0-60,y0+139,40,28);
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.arc(x0+60,y0+153,14,-Math.PI*0.5,Math.PI*0.5);
ctx.rect(x0+20,y0+139,40,28);
ctx.fill();
ctx.stroke();
}
function drawHat(x0,y0){//帽子
ctx.beginPath();
ctx.fillStyle = "#363B34";
ctx.strokeStyle = "#363B34";
ctx.moveTo(x0-35,y0-221);
ctx.lineTo(x0-35,y0-256);
ctx.lineTo(x0+25,y0-256);
ctx.arcTo(x0+35,y0-256,x0+35,y0-246,10);
ctx.lineTo(x0+35,y0-221);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.beginPath();
ctx.arc(x0-25,y0-253,10,0,Math.PI,true);
ctx.fill();
ctx.stroke();
ctx.font = "12px Arial red";
ctx.fillStyle = "#F6F367";
ctx.fillText("佛",x0-5,y0-243);
}
function init(x0,y0){
coordinate();
drawLeg(x0,y0)
drawClothes(x0,y0);
drawBelly(x0,y0);
drawHat(x0,y0);
drawHead(x0,y0);
}
init(300,300);
</script>
</body>
</html>







网友评论文明上网理性发言 已有0人参与
发表评论: