分享一例Canvas画的猴子

袁志蒙 4083次浏览

摘要:学人家年轻人耍耍canvas,花了一天半时间,硬是画了一个猴哥!

学人家年轻人耍耍canvas,花了一天半时间,硬是画了一个猴哥!

代码分享:

<!DOCTYPE html>
<html lang="zh-CN">
 <head>
  <meta charset="UTF-8" />
  <meta name="Keywords" content="" />
  <meta name="Description" content="" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
 
  <title>孙悟空</title>
  <style>
    body{text-align:center;padding-top:3em;}
  </style>
 </head>
 <body>
   <canvas width="650" height="478"></canvas>   
   <script>

     (function(){
       var cvs=document.querySelector("canvas"),
       g=cvs.getContext("2d");
       g.lineWidth=2;

	   //右臂
	   g.beginPath();
	     g.strokeStyle="#DE821B";
	     g.fillStyle="#FFDE00";
	     g.moveTo(261,337);
		 g.quadraticCurveTo(268,328,287,320);
		 g.lineTo(323,357);
		 g.quadraticCurveTo(281,415,243,377);
	   g.closePath();
	   g.fill();
	   g.stroke();

	   //身体
	   g.beginPath();
	     g.strokeStyle="#DE821B";
	     g.fillStyle="#FFDE00";
	     g.moveTo(86,265);
		 g.quadraticCurveTo(33,267,15,292);
		 g.lineTo(52,339);
		 g.quadraticCurveTo(88,328,101,341);
		 g.lineTo(92,336);
		 g.quadraticCurveTo(88,338,81,347);
		 g.bezierCurveTo(188,468,306,372,261,306);
         
	   g.closePath();
	   g.fill();
	   g.stroke();

	   //衣带
	   g.beginPath();
	     g.fillStyle="#000000";
	     g.moveTo(251,330);
		 g.quadraticCurveTo(241,369,139,384);
		 g.quadraticCurveTo(231,400,273,343);
	   g.closePath();
	   g.fill();

	   //右手
	   g.strokeStyle="#842C00";
	   g.fillStyle="#BA6830";
	   g.beginPath();
	     g.moveTo(15,291);
		 g.bezierCurveTo(-16,339,31,348,51,339);
		 g.fill();
		 g.stroke();
	  g.beginPath();
	     g.moveTo(51,339);
		 g.quadraticCurveTo(65,295,15,291);
	  g.closePath(); 
	  g.fill();
	   
	   //左手
	   g.beginPath();
	     g.moveTo(287,320);
		 g.bezierCurveTo(370,283,377,363,322,356);
		 g.fill();
		 g.stroke();
	   g.beginPath();
	     g.moveTo(287,320);
         g.quadraticCurveTo(291,349,322,356);
	  g.closePath(); 
	  g.fill();

	  //左脚
	  g.beginPath();
	    g.strokeStyle="#690203";
		g.fillStyle="#000000";
	    g.moveTo(110,404);
		g.quadraticCurveTo(57,440,113,453);
	  g.closePath();
	  g.fill();
	  g.stroke();
	  //右脚
	  g.beginPath();
	    g.moveTo(110,424);
		g.bezierCurveTo(58,465,117,498,173,463);
	  g.closePath();
	  g.fill();
	  g.stroke();

	  //裙角
	  g.beginPath();
		g.strokeStyle="#949591";
	    g.fillStyle="#D1D2D4";
	    g.moveTo(255,424);
		g.quadraticCurveTo(242,436,222,437);
		g.quadraticCurveTo(223,426,219,425);
		g.quadraticCurveTo(231,417,255,424);
		g.fill();
		g.stroke()
	  g.closePath();

	  //左腿
	  g.beginPath();
	    g.strokeStyle="#650300";
		g.fillStyle="#ED1B24";
	    g.moveTo(211,404);
		g.quadraticCurveTo(245,467,166,467);
	  g.closePath();
	  g.fill();
	  g.stroke();
	  //右腿
	  g.beginPath();
	    g.moveTo(62,364);
		g.quadraticCurveTo(45,427,127,433);
		g.quadraticCurveTo(130,457,170,463);
		g.quadraticCurveTo(203,442,194,403);
	  g.closePath();
	  g.fill();
	  g.stroke();

	  //裙摆
	  g.beginPath();
	    g.strokeStyle="#949591";
		g.fillStyle="#FFFFFF";
	    g.moveTo(45,354);
		g.quadraticCurveTo(174,413,246,410);
		g.quadraticCurveTo(254,419,254,424);
		g.quadraticCurveTo(226,414,204,438);
		g.quadraticCurveTo(166,389,125,432);
		g.quadraticCurveTo(102,400,66,403);
		g.quadraticCurveTo(70,372,32,365);
		g.quadraticCurveTo(36,360,45,354);
		g.fill();
	    g.stroke();		
	  g.closePath();

	  //裙
	  g.beginPath();
	    g.strokeStyle="#952C3D";
		g.fillStyle="#EE707B";
	    g.moveTo(81,346);
		g.quadraticCurveTo(142,418,224,398);
		g.quadraticCurveTo(242,407,245,410);
		g.quadraticCurveTo(221,410,206,424);
		g.quadraticCurveTo(164,384,124,415);
		g.quadraticCurveTo(114,396,79,394);
		g.quadraticCurveTo(74,368,44,354);
		g.quadraticCurveTo(64,343,83,346);
	  g.closePath();
	  g.fill();
	  g.stroke();
	  //黑斑
	  g.beginPath();
	    g.fillStyle="#000000";
	    g.moveTo(62,348);
		g.bezierCurveTo(59,365,90,390,86,353);
		g.lineTo(80,346);
		g.quadraticCurveTo(69,345,62,348);
	  g.closePath();
	  g.fill();
	  g.beginPath();
	    g.moveTo(112,377);
		g.quadraticCurveTo(114,380,132,388);
		g.bezierCurveTo(114,397,88,386,112,377);
	  g.closePath();
	  g.fill();
	  g.beginPath();
	    g.moveTo(205,402);
		g.quadraticCurveTo(212,401,226,398);
        g.bezierCurveTo(245,406,196,420,205,403);
	  g.closePath();
	  g.fill();

	  //裙
	  g.beginPath();
	    g.strokeStyle="#952C3D";
		g.fillStyle="#EE707B";
	    g.moveTo(106,395);
		g.quadraticCurveTo(160,363,193,412);
		g.quadraticCurveTo(160,389,125,414);
		g.fill();
		g.stroke();
	  g.closePath();
	  g.beginPath();
	    g.fillStyle="#000000";
	    g.moveTo(148,383);
		g.quadraticCurveTo(164,384,177,396);
        g.bezierCurveTo(153,405,140,382,148,383);
	  g.closePath();
	  g.fill();
	  //修整
	  g.beginPath();
	    g.moveTo(81,346);
		g.quadraticCurveTo(48,345,31,365);
		g.stroke();
	  g.closePath();
	  g.beginPath();
	    g.moveTo(228,399);
		g.quadraticCurveTo(257,415,254,424);
		g.stroke();
	  g.closePath();


	   //帽冠
       g.beginPath(); 
	   g.strokeStyle="#DE821B";
       g.fillStyle ="#DDA90C";
       g.moveTo(40,137);
       g.bezierCurveTo(-8,152,-12,225,34,222);
       g.stroke();
       g.closePath();
       g.fill();

       g.beginPath();
       g.moveTo(38,137);
       g.bezierCurveTo(0,152,4,194,32,202);
       g.closePath();
       g.fillStyle="#FFDE00";
       g.fill();

       //帽子外边
	  
       g.beginPath();
       g.moveTo(290,53);
       g.quadraticCurveTo(250,17,135,51);

       g.bezierCurveTo(-5,105,5,270,102,268);
       g.stroke();
       g.closePath();
       g.fillStyle="#DDA90C";
       g.fill();

	   g.beginPath();
       g.fillStyle="#FFDE00";
	   g.moveTo(290,54);
       g.bezierCurveTo(258,19,115,35,72,95);	   
	   g.bezierCurveTo(75,95,3,207,100,227);
	   g.closePath();
	   g.fill();

    //头巾
	g.strokeStyle="#6B9C7F";
	g.fillStyle="#B2DDC9";
	g.beginPath();	 
	  g.moveTo(329,98);	  
	  g.bezierCurveTo(294,15,147,72,110,203);
	  g.fill();	
	  g.stroke();
	g.closePath();
	g.beginPath();
	  g.fillStyle="#8DB2A4";
	  g.moveTo(247,62);
	  g.lineTo(261,72);
	  g.lineTo(280,70);
	  g.lineTo(262,58);
	g.closePath();
    g.fill();
    

	 //围巾
	 g.beginPath();
	   g.strokeStyle="#007CB2";
	   g.fillStyle="#4DC6E1";
	   g.moveTo(88,268);
	   g.bezierCurveTo(132,277,173,358,214,318);
       g.quadraticCurveTo(185,337,185,352);
	   g.bezierCurveTo(221,333,235,354,252,342);
	   
	   g.quadraticCurveTo(272,340,270,358);
	   g.quadraticCurveTo(301,333,269,318);
	   g.lineTo(280,325);
	   g.quadraticCurveTo(292,297,165,227);
	   g.fill();
       g.stroke();
	 g.closePath();
	 g.beginPath();
	   g.lineTo(265,312);
	   g.quadraticCurveTo(285,350,250,344);
	   g.quadraticCurveTo(262,333,253,318); 
	   
	 g.closePath();
	 g.fill();
	   g.stroke();	 

	 //头
	 g.beginPath();
	   g.strokeStyle="#842C00";
	   g.fillStyle="#BA6830";
       g.moveTo(351,141);
	   g.bezierCurveTo(313,-3,144,102,111,234);
	   g.bezierCurveTo(118,247,147,327,260,321);
       g.stroke();
	 g.closePath();
	 g.fill();
	 //头阴影
	 g.beginPath();
	   g.fillStyle="#8B411F";
	   g.moveTo(316,83);
	   g.quadraticCurveTo(341,103,349,135);
	   g.quadraticCurveTo(338,120,337,119);
	   g.quadraticCurveTo(330,103,311,83);
	   g.fill();
	 g.closePath();

	 //头巾结
	 g.beginPath();
	    g.strokeStyle="#6B9C7F";
	    g.fillStyle="#B2DDC9";
		g.moveTo(231,2);
		g.quadraticCurveTo(245,75,311,78);
		g.quadraticCurveTo(331,56,325,13);
		g.quadraticCurveTo(316,16,303,5);
		g.quadraticCurveTo(315,37,304,65);
		g.quadraticCurveTo(263,58,264,2);
		g.quadraticCurveTo(255,12,231,1);
		g.quadraticCurveTo(235,61,301,78);
		g.fill();
        g.stroke();
	g.closePath();
   
	
     g.beginPath();
	    g.moveTo(287,57);
	    g.quadraticCurveTo(296,65,295,78);
	    g.quadraticCurveTo(315,85,315,80);
	    g.quadraticCurveTo(306,49,281,53);
        g.stroke();
	 //g.closePath();
	 g.fill();
	 g.beginPath();
	   g.fillStyle="#8DB2A4";
	   g.moveTo(298,79);
	   g.quadraticCurveTo(322,88,311,70);
	   g.quadraticCurveTo(306,77,298,79);
	   g.fill();
	 g.closePath();

	 //耳朵
     g.beginPath();
	   g.strokeStyle="#842C00";
	   g.fillStyle="#BA6830";
       g.moveTo(127,207);
	   g.bezierCurveTo(62,164,36,281,135,268);

       g.stroke();
	 g.closePath();
	 g.fill();

	 g.beginPath();
	   g.fillStyle="#95411D";
	   g.moveTo(123,236);
	   g.bezierCurveTo(92,203,64,250,122,236);
	 g.closePath();
	 g.fill();

	 g.beginPath();
	 g.moveTo(127,238);
	 g.lineWidth=1;
	 g.strokeStyle="#842C00";
	 g.quadraticCurveTo(104,220,88,225);
	 g.stroke();

     //脸
	 g.beginPath();
	 g.moveTo(322,253);
	 g.strokeStyle="#842C00";
	 g.fillStyle="#FFFFFF";
	 g.lineWidth=2;
	 g.bezierCurveTo(276,235,376,197,348,135);
	 g.quadraticCurveTo(303,73,237,81);
	 g.quadraticCurveTo(203,93,170,129);
	 g.quadraticCurveTo(143,223,231,268);
	 g.bezierCurveTo(198,276,216,314,253,321);
	 g.quadraticCurveTo(279,319,314,302);
	 g.lineTo(317,294);
	 g.quadraticCurveTo(338,285,316,257);
	 
     g.closePath();
	 g.stroke();
	 g.fill();
	 //脸阴影
	 g.beginPath();
	   g.fillStyle="#CCD0D5";
	   g.moveTo(341,127);
	   g.quadraticCurveTo(348,132,349,139);
	   g.quadraticCurveTo(361,172,331,206);	   
	   g.lineTo(329,201);
	   g.quadraticCurveTo(358,159,339,126);
	   g.fill();
	 g.closePath();
     

	 //眉毛	 
	 g.beginPath();
	 g.moveTo(279,137);
	 g.strokeStyle="#096F30";
	 g.fillStyle="#5CA74A";
	 g.quadraticCurveTo(295,114,308,132);
	 g.bezierCurveTo(312,142,307,143,312,162);
	 g.bezierCurveTo(296,139,303,129,280,136);

     g.closePath();
	 g.stroke();
	 g.fill();

	 //眼眶	 
	 g.beginPath();
	 g.moveTo(279,137);
	 g.strokeStyle="#B21D21";
	 g.fillStyle="#ED1B24";
	 g.lineWidth=1;
	 g.moveTo(321,253);
	 g.bezierCurveTo(302,242,309,234,331,207);
	 g.bezierCurveTo(279,109,198,173,235,228);
	 g.bezierCurveTo(259,269,290,239,325,271);
	 g.quadraticCurveTo(324,265,316,258);
     g.fill();
	 g.stroke();
	 g.closePath();
	 
	 
	 //眼眶阴影
	 g.beginPath();
	   g.fillStyle="#B81214";
	   g.moveTo(328,202);
	   g.quadraticCurveTo(305,229,310,240);
	   g.quadraticCurveTo(311,229,332,207);
	   g.fill();
	 g.closePath();

	  //眼睛	 
	 g.beginPath();
	 g.moveTo(271,252);
	 g.strokeStyle="#FFDE00";
	 g.fillStyle="#FFFFFF";

	 g.bezierCurveTo(226,187,326,161,299,257);
     g.stroke();
     g.closePath();
	 g.stroke();
	 g.fill();

	 //眼球
	 g.beginPath();
	   g.fillStyle="#49494B";
	   g.moveTo(292,255);
	   g.bezierCurveTo(280,217,315,200,299,257);	   
	 g.closePath();
	 g.fill();
	 g.beginPath();
	   g.fillStyle="#000000";
	   g.moveTo(299,251);
	   g.bezierCurveTo(272,242,314,187,299,251);
	 g.closePath();
	 g.fill();
	 g.beginPath();
	 g.fillStyle="#FFFFFF";
	 g.moveTo(298,229);
	 g.bezierCurveTo(292,208,287,255,298,233);
	 g.closePath();
	 g.fill();

	 //嘴巴
	 g.beginPath();
	   g.strokeStyle="#6DAE5E";
	   g.moveTo(310,267);
	   g.bezierCurveTo(328,282,312,308,293,303);
       g.stroke();
	   g.strokeStyle="#842C00";	   
	   g.moveTo(321,292);
	   g.bezierCurveTo(322,301,318,304,312,298);
	   g.stroke();
	   g.fill();
	 g.closePath();

	 //右手阴影
	 g.beginPath();
	     g.fillStyle="#97441E";
		 g.moveTo(8,331);
		 g.quadraticCurveTo(28,336,53,318);
		 g.quadraticCurveTo(53,328,50,339);
		 g.quadraticCurveTo(18,347,10,331);
		 g.fill();
     g.closePath();
	 g.beginPath();
	    g.moveTo(311,352);
	    g.quadraticCurveTo(326,346,338,354);
	    g.quadraticCurveTo(327,359,311,352);
        g.fill();
	 g.closePath();
	 g.beginPath();
	   g.fillStyle="#DDA80C";
	   g.moveTo(54,318);
	   g.bezierCurveTo(77,303,137,338,107,347);
	   g.quadraticCurveTo(94,324,51,339);
	   g.quadraticCurveTo(54,326,54,318);
	   g.fill();
	 g.closePath();
	 g.beginPath();
	   g.moveTo(107,347);
	   g.quadraticCurveTo(104,350,88,353);
	   g.lineTo(83,345);
	   g.quadraticCurveTo(85,341,91,337);
	   g.quadraticCurveTo(99,341,107,345);
	   g.fill();
	 g.closePath();
	 g.beginPath();
	   g.moveTo(260,371);
	   g.quadraticCurveTo(277,387,311,352);
	   g.quadraticCurveTo(316,356,322,356);
	   g.quadraticCurveTo(287,408,250,382);
	   g.fill();
	 g.closePath();

	 //云
	 g.strokeStyle="#43AEDA";
	 g.beginPath();
	   g.moveTo(337,297);
	   g.quadraticCurveTo(396,311,460,301);
	   g.bezierCurveTo(442,296,453,278,462,283);
	   g.moveTo(475,274);
	   g.bezierCurveTo(487,299,447,284,464,265);
	   g.bezierCurveTo(476,251,487,262,489,263);
	   g.bezierCurveTo(464,227,533,216,533,243);
	   g.bezierCurveTo(530,277,488,246,514,241);
	   g.moveTo(529,228);
	   g.bezierCurveTo(554,165,660,205,622,249);
	   g.bezierCurveTo(667,267,620,326,585,278);
	   g.bezierCurveTo(578,298,533,273,559,254);
	   g.bezierCurveTo(587,244,581,282,565,270);
	   g.moveTo(637,287);
	   g.bezierCurveTo(672,316,624,331,614,323);
	   g.moveTo(598,317);
       g.bezierCurveTo(595,337,566,309,592,306);
       g.bezierCurveTo(626,304,616,346,585,334);
       g.bezierCurveTo(570,353,536,346,530,324);
       g.bezierCurveTo(529,283,589,323,544,320);
	   g.moveTo(516,317);
	   g.bezierCurveTo(494,307,527,293,532,310);
	   g.moveTo(528,327);
	   g.bezierCurveTo(517,337,488,332,477,314);
	   g.moveTo(480,311);
	   g.quadraticCurveTo(425,319,337,297);
	   g.stroke();
	 g.closePath();

	 g.beginPath();
	   g.fillStyle="#C7E6F4";
	   g.moveTo(480,311);
	   g.quadraticCurveTo(425,319,337,297);
	   g.quadraticCurveTo(425,315,473,306);
	   g.fill();
	 g.closePath();
	 
	 g.beginPath();
	   g.moveTo(606,202);
	   g.quadraticCurveTo(642,216,623,250);
	   g.quadraticCurveTo(615,244,601,248);
	   g.quadraticCurveTo(632,228,606,202);
	   g.fill();
	 g.closePath();
	  g.beginPath();
	   g.moveTo(630,254);
	   g.bezierCurveTo(663,282,609,315,589,281);
	   g.bezierCurveTo(589,292,650,299,630,254);
	   g.fill();
	 g.closePath();
	 g.beginPath();
	   g.moveTo(646,296);
	   g.quadraticCurveTo(659,325,614,324);
	   g.lineTo(614,324);
	   g.quadraticCurveTo(648,319,646,296);
	   g.fill();
	 g.closePath();
	 g.beginPath();
	   g.moveTo(573,328);
	   g.quadraticCurveTo(574,339,561,345);
	   g.quadraticCurveTo(578,343,585,334);
	   g.fill();
	 g.closePath();
	 g.beginPath();
	   g.moveTo(501,331);
	   g.quadraticCurveTo(539,325,523,302);
	   g.quadraticCurveTo(535,309,530,313);
	   g.quadraticCurveTo(529,309,528,326);
	   g.quadraticCurveTo(515,335,501,331);
	   g.fill();
	 g.closePath();
     })();

   </script>
 </body>
</html>
随机内容

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~